У меня есть базовый класс:
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;
};
И несколько производных классов, приведенный пример:
class Bar : public Foo {
public:
Bar();
private:
const char* getClassName()
{
return "Bar";
}
};
Приведенный выше код дает «неопределенную ссылку на Foo :: getClassName ()», которую я предполагаю, потому что код хочет вызвать Foo :: getClassName (), но как мне заставить его вызывать функцию как виртуальный вызов нормально? И.Е. Как мне заставить его вызывать Bar :: getClassName () из Foo?
РЕДАКТИРОВАТЬ: Забыли наследство чтоли