for some reason I'm thinking on implementing interface within a some function(method) as local class.
Consider following:
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;
}
the reasons why I'm doing this are:
- I'm lazy to implement class (B) in separate fi开发者_如何学Goles
- MethodToOverride just delegates call to other class
- Class B shouldn't be visible to other users
- no need to worry about deleting aInst since smart pointers are used in real implementation
So my question is if I'm doing this right?
Thanks in advance!
You could define
Bin the unnamed namespace of the implementation file where you implementGetPtrToAImplementation().Ashould have a virtual dtor.By the current C++ standard, you cannot use local classes as template arguments. (Which means you can't use them with the STL, for example.)
加载中,请稍侯......
精彩评论