consider the following code:
struct A {
virtual void foo() {}
virtual ~A() = 0;
};
struct B :public A
{
virtual void foo() {};
};
A::~A() {};
int main()
{
A * a = new B();
a->foo();
}
works great. but now consider the second code, where we need to declare our classes locally inside the function as:
void foo()
{
struct A {
virtual void foo() {}
virtual ~A() = 0;
};
struct B :public A
{
virtual void foo() {};
};
A::~A() {};
A * a = new B();
a->foo();
}
int main()
{
foo();
}
code dose does not compile! Any ideas? is any way to override a pure virtual base class destructor that is declared locally?
source
share