A
で拡張している基本クラスがありX
ます。内部A
には別のクラスB
. 仮想メソッドが定義されていないようですが、理由がわかりません。
class A {
public:
class B {public: bool value;};
A() {}
B b_;
void DoStuff(B& b);
private:
virtual void DoStuffImpl(B& b) = 0;
};
class X : public A {
public:
X() {}
void Trigger();
private:
virtual void DoStuffImpl(B& b);
};
void A::DoStuff(B& b) {
DoStuffImpl(b);
}
void X::Trigger() {
DoStuff(b_);
}
void X::DoStuffImpl(B& b) {
b.value = true;
}
int main(){
X x;
x.Trigger();
return x.b_.value;
}
PSこれは、コードに別の問題があるために発生しましたが、このおもちゃの例を機能させることさえできなかったので、今ではこれが気になります....
コンパイルして実行に失敗している上記のコードへのリンクは次のとおりです: http://ideone.com/mBJ1Kg