J'ai une classe de base:C classe de base abstraite appelant propres résultats de fonction virtuelle pure dans "référence non définie"
class Foo {
public:
virtual ~Foo() {}
static void printFoos()
{
std::vector<Foo*>::iterator it;
for(it=fooList.begin();it!=fooList.end();++it)
{
std::cout<<"Class: "<<(*it)->getClassName()<<"\n";
}
}
virtual const char* getClassName()=0;
static std::vector<Foo*> fooList;
};
Et quelques classes dérivées, par exemple donné:
class Bar : public Foo {
public:
Bar();
private:
const char* getClassName()
{
return "Bar";
}
};
Le code ci-dessus donne "une référence indéfinie à Foo :: getClassName()" que Im suppose parce que le code veut appeler Foo :: getClassName(), mais comment l'obtenir pour appeler la fonction comme un appel virtuel normalement? C'EST À DIRE. Comment l'obtenir pour appeler Bar :: getClassName() à partir de Foo?
EDIT: l'héritage oublié thingy
Où est le code appelant? Pouvez-vous coller cela? – Sid
Aussi Bar ne dérive pas de Foo au moins dans votre code ci-dessus. – Sid
Si vous déclarez getClassName en tant que public dans la classe Base, ne devrait-il pas également être public dans la classe Derived? –