出于某种原因,我正在考虑将某个函数(方法)中的接口实现为本地类。
考虑以下:
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,因为在实际实现中使用了智能指针
所以我的问题是我这样做是否正确?
提前致谢!