出于某种原因,我正在考虑在一个函数(方法)中实现接口作为本地类.
考虑以下:
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;
}
Run Code Online (Sandbox Code Playgroud)
我这样做的原因是:
所以我的问题是我做得对吗?
提前致谢!
您可以B在实现文件的未命名命名空间中定义您实现的位置GetPtrToAImplementation().
A 应该有一个虚拟的dtor.
根据当前的C++标准,您不能将本地类用作模板参数.(例如,这意味着你不能将它们与STL一起使用.)