Bonfo
25-11-2006, 18:55
La domanda e' molto semplice: come si fa??
Esempio: ho definito un funzionamento nella classe base in funzione di una variabile di "classe", infatti e' static :D
Vorrei che le classi che derivano, ridefinendo il valore di quella classe, modificassero il comportamento della classe base.
Voi mi direte...l'ereditarieta' serve a quello.
Infatti, ma il problema e' che non voglio sovrascrivere il metodo, infatti fa un sacco di cose belle, fa cicli e delle elaborazioni inizali, e non mi sembra furbo per un paio di controlli sui valori di ingersso riscrivere tuttttttto il codice.
Classe Base (in ordine header e codice)
#ifndef BASE_H_
#define BASE_H_
class Base:
{
public:
GreyScale();
virtual ~GreyScale();
virtual void DoSomenthing();
protected:
static bool m_doIt;
};
#endif /*BASE_H_*/
#include "Base.h"
#include <stdio.h>
bool Base::m_doIt = false;
Base::Base() :
{
}
Base::~Base()
{
}
void Base::DoSomenthing()
{
if(m_doIt)
{
printf("OK");
}
}
Ed ecco la classe che eredita ( come al solito header e poi codice :D)
#ifndef EXECUTOR_H_
#define EXECUTOR_H_
class Executor:
{
public:
Executor();
virtual ~Executor();
protected:
static bool m_doIt;
};
#endif /*EXECUTOR_H_*/
#include "Executor.h"
bool Executor::m_doIt = true;
Executor::Executor() :
{
}
Executor::~Executor()
{
}
Peccato che questo non stampa nulla:
int main(int argc, char* argv)
{
Executor* exec = new Executor();
exec->DoSomething();
return 0;
}
:cry: :cry: :cry:
Ogni aiuto e' ben acetto ;)
P.S.: adesso che ci penso potrei fare un metodo astratto per il controllo e ereditare solo quello, ma mi piacerebbe in ogni caso capire come si fa a fare questa cosa in C++ :sofico:
Esempio: ho definito un funzionamento nella classe base in funzione di una variabile di "classe", infatti e' static :D
Vorrei che le classi che derivano, ridefinendo il valore di quella classe, modificassero il comportamento della classe base.
Voi mi direte...l'ereditarieta' serve a quello.
Infatti, ma il problema e' che non voglio sovrascrivere il metodo, infatti fa un sacco di cose belle, fa cicli e delle elaborazioni inizali, e non mi sembra furbo per un paio di controlli sui valori di ingersso riscrivere tuttttttto il codice.
Classe Base (in ordine header e codice)
#ifndef BASE_H_
#define BASE_H_
class Base:
{
public:
GreyScale();
virtual ~GreyScale();
virtual void DoSomenthing();
protected:
static bool m_doIt;
};
#endif /*BASE_H_*/
#include "Base.h"
#include <stdio.h>
bool Base::m_doIt = false;
Base::Base() :
{
}
Base::~Base()
{
}
void Base::DoSomenthing()
{
if(m_doIt)
{
printf("OK");
}
}
Ed ecco la classe che eredita ( come al solito header e poi codice :D)
#ifndef EXECUTOR_H_
#define EXECUTOR_H_
class Executor:
{
public:
Executor();
virtual ~Executor();
protected:
static bool m_doIt;
};
#endif /*EXECUTOR_H_*/
#include "Executor.h"
bool Executor::m_doIt = true;
Executor::Executor() :
{
}
Executor::~Executor()
{
}
Peccato che questo non stampa nulla:
int main(int argc, char* argv)
{
Executor* exec = new Executor();
exec->DoSomething();
return 0;
}
:cry: :cry: :cry:
Ogni aiuto e' ben acetto ;)
P.S.: adesso che ci penso potrei fare un metodo astratto per il controllo e ereditare solo quello, ma mi piacerebbe in ogni caso capire come si fa a fare questa cosa in C++ :sofico: