每當我嘗試訪問虛函數時,我都會遇到分段錯誤。該代碼基本上是這樣的:虛函數調用分段錯誤
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
}
我已經試過幾乎所有我知道的虛擬功能,這是行不通的。它實際上是一個更大的程序的一部分,所以它可能有一些問題,但只要我刪除虛擬功能或停止使其成爲虛擬功能。有任何想法嗎?
還有沒有任何工具或方法來檢查虛擬表?
代碼在此處生成並運行良好。 – 2011-04-10 12:05:29
yups它應該,但它不在我的機器上。我在一臺LYnxOS powerPC機器上運行它。你能想到任何不應該運行的情況嗎? – 2011-04-11 04:06:57