最近、別の 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() の「if」行で「不完全な型 A へのメンバー アクセス」というエラーを返します。コンパイラがそのようなエラーを返す理由を誰かが説明してくれますか? そして、例外を発生させることが本当に正しい場合、どうすればそれを防ぐことができますか?
どうもありがとう!