Я получаю ошибку сегментации, когда пытаюсь получить доступ к виртуальной функции.Код в основном такой:
class Super {
public:
Super() { cout << "Ctor Super" << endl; }
virtual void test() = 0;
};
class Sub : public Super {
public:
Sub() { cout << "Ctor Sub" << endl; }
void test() { cout << "Test in Sub" << endl; }
};
void main()
{
Super* s = new Sub;
s->test(); // Segmentation fault So I tried the one below
Sub* s1 = new Sub;
s1->test(); //Still segmentation fault
Sub s2;
s2.test(); // Works fine BUT
Super *s3 = &s2;
s3->test(); // segmentation fault and EVEN
Sub *s4 = &s2;
s4->test(); //segmentation fault
}
Я перепробовал почти все, что я знаю о виртуальных функциях, и он не работает.На самом деле это часть более крупной программы, поэтому у нее могут быть некоторые проблемы, но как только я удаляю виртуальную функцию или перестаю делать ее виртуальной, она работает.Любые идеи?
Также есть какой-нибудь инструмент или способ проверить vtable?