가상 함수에 액세스하려고 할 때마다 분할 오류가 발생합니다. 코드는 기본적으로 다음과 같습니다.가상 함수가 세그먼트 화 오류를 호출합니다.
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을 검사 할 수있는 도구 나 방법이 있습니까?
코드가 잘 작성되어 실행됩니다. –
yups해야하지만 내 컴퓨터에 없습니다. 나는 LYnxOS powerPC 기계에서 실행 중이다. 실행해서는 안되는 상황을 생각해 볼 수 있습니까? –