考虑以下代码:
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();
}
它工作得很好。但是现在考虑第二个代码,我们需要在一个函数中本地声明类:
void foo()
{
struct A {
virtual void foo() {}
virtual ~A() = 0;
};
struct B :public A
{
virtual void foo() {};
};
A::~A() {}; //error C2352 : 'A::~A' : illegal call of non - static member function
A * a = new B();
a->foo();
}
int main()
{
foo();
}
代码无法编译!任何的想法?有什么方法可以重新定义在本地声明的基类的纯虚拟析构函数?
类声明可以出现在函数主体内部(...),在这种情况下,它定义了一个本地类
...
本地类的成员函数必须完全在类体内定义
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句