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