何らかの理由で、ローカルクラスとしていくつかの関数(メソッド)内にインターフェイスを実装することを考えています。
以下を検討してください。
class A{
public:
virtual void MethodToOverride() = 0;
};
A * GetPtrToAImplementation(){
class B : public A {
public:
B(){}
~B(){}
void MethodToOverride() {
//do something
}
};
return static_cast<A *>(new B());
}
int _tmain(int argc, _TCHAR* argv[])
{
A * aInst = GetPtrToAImplementation();
aInst->MethodToOverride();
delete aInst;
return 0;
}
私がこれを行っている理由は次のとおりです。
- クラス(B)を別々のファイルに実装するのが面倒です
- MethodToOverride は呼び出しを他のクラスに委任するだけです
- クラス B は他のユーザーから見えないようにする必要があります
- 実際の実装ではスマート ポインターが使用されるため、aInst の削除について心配する必要はありません。
私の質問は、私がこれを正しく行っているかどうかです。
前もって感謝します!