Implement abstract class as a local class? pros and cons
- by sinec
Hi,
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 reason why I'm doing this are:
I'm lazy to implement class (B) in separate files
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!