は、次のコードを検討してください。今度はクラス内のクラスを関数内で宣言する必要がある2番目のコードを考えてみましょう。純粋仮想デストラクタは
void foo()
{
struct A {
virtual void foo() {}
virtual ~A() = 0;
};
struct B :public A
{
virtual void foo() {};
};
A::~A() {}; //error C2352 : 'A::~A' : illegal call of non - static member function
A * a = new B();
a->foo();
}
int main()
{
foo();
}
コードはコンパイルされません!何か案が?ローカルで宣言されている基本クラスの純粋な仮想デストラクタを再定義する方法はありますか?
ローカルクラスのすべてのメソッド定義は、クラス内にインライン化する必要があります。 – Jarod42
ローカルスコープにいるので(依存関係を制御するため)、 '= 0'を取り除いて直接コードを提供することができます。 – Jarod42