class A
{
public:
virtual void
doSomething(void)
{}
void
doStuff(void)
{
doSomething();
}
};
class B : public A
{
public:
void
doSomething(void)
{
// do some stuff here
}
};
B * b = new B;
b->doStuff();
Это дает мне ошибку сегментации. Что я делаю не так? На мой взгляд, это должно хорошо работать!Вызов виртуального метода подкласса из метода базового класса
B не имеет члена doStuff - так будет вызываться A :: doStuff. – 2010-01-15 12:42:36
Он вызывает неполиморфный 'doStuff', реализация которого вызывает полиморфное' doSomething'. – ChrisW
Я вызываю 'doStuff()', который объявлен в классе 'B' и вызывается из класса' A'. – kjagiello