本地抽象类的纯虚拟析构函数

微机电系统

考虑以下代码:

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();  
}

代码无法编译!任何的想法?有什么方法可以重新定义在本地声明的基类的纯虚拟析构函数?

cppreference

类声明可以出现在函数主体内部(...),在这种情况下,它定义了一个本地类

...

本地类的成员函数必须完全在类体内定义

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章