直接析构类调用类

时间:2014-06-02 18:50:30

标签: c++ class destructor language-lawyer

代码:

#include <iostream>

namespace A
{
    class D{ };
    class C
    {
    public:
        static const int a=7;
        ~C(){ std::cout << "Destroyed"; }
        C() { std::cout << "Created"; }
    };
}

int main()
{
    typedef A::C zlp;
    zlp *z= new zlp();
    z->A::D::~zlp();//error: ‘A::D’ is not a base of ‘zlp {aka A::C}’
}

我读了3.4.3 / 1 N3797。有写

  

如果伪析构函数名称(5.2.4)包含嵌套名称说明符,   类型名称被查找为由指定的范围中的类型   嵌套名称符。同样,在表格的限定ID中:

nested-name-specifier_opt class-name :: ~ class-name
     

第二个类名在与第一个类名相同的范围内查找。

此引用并未说明nested-name-specifier_opt class-name必须是zlp的基本类型。你能解释一下这种行为吗?我想找到相应的标准参考。

0 个答案:

没有答案