1
最近,我偶然發現了另一個C++問題,這給我帶來很多困難。假設我們有小程序:指向虛擬類
class A {
public:
virtual bool c() = 0;
virtual bool b() = { return false; };
virtual ~A() {}
}
class B : public A {
public:
bool b() = { return true; };
~B() {}
}
...
void c(A *pointer) {
if (pointer->b()) {
cout << "Derived class";
}
}
在這種情況下,編譯器的方法C()與誤差「成員訪問到不完整的類型A」的「如果」行返回錯誤。有人可以解釋爲什麼編譯器返回這樣的錯誤嗎?如果解除異常確實是正確的,那我該如何預防呢?
非常感謝!
你真的試着編譯你發佈的代碼嗎?代碼中有幾處語法錯誤。順便說一下:我複製了你的代碼並修復了簡單的錯誤。一切都很好。 –