【问题标题】:class B inside class A inherits class A [duplicate]A类中的B类继承A类[重复]
【发布时间】:2020-08-28 03:31:47
【问题描述】:

我尝试了以下,但编译失败。

class A {
   
   //...members

   class B : public A {    //<---failed here
      using A::A;
      
   }
   
}

这可能吗(特别是在 c++17 中)?这只是语法错误吗? 如果不可能,为什么这不起作用?

【问题讨论】:

    标签: c++ inheritance c++17 inner-classes


    【解决方案1】:

    这可以做到,但是B 的定义需要移到A 之外。在右大括号之前,A 是一个不完整的类型,而基类必须是完整的。

    这可行:

    class A {
       class B;
    };
    
    class A::B : public A {
        using A::A;
    };
    

    【讨论】:

    • 哇!好东西我在这里问。我不知道内部类甚至可以在 c++11 之前定义。 :)
    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-07
    • 2015-09-07
    相关资源
    最近更新 更多