具有相同名称的类的构造函数继承

Posted

技术标签:

【中文标题】具有相同名称的类的构造函数继承【英文标题】:Constructor inheritance with classes of the same name 【发布时间】:2019-11-08 14:55:22 【问题描述】:

我想继承基类的构造函数,但是不编译。 如何在不更改类名的情况下解决此问题?

class MyClass

public:
    class A
    

    ;
;

class MyClass2 : MyClass

public:
    class A : MyClass::A
    
        //error: expected nested-name-specifier before ‘namespace’
        using (MyClass::A)::(MyClass::A);
    ;
;

【问题讨论】:

@uneven_mark 感谢问题已解决=) 【参考方案1】:
using MyClass::A::A;

构造函数由一个限定名引用到应该从中导入它的基类,即MyClass::A,然后又是类名来引用构造函数,但只有类名,而不是限定名,即A

【讨论】:

【参考方案2】:

使用MyClass::A::A; 能达到你想要的效果吗?

如果你想使用MyClass::A类中的method(),你必须写using MyClass::A::method;。在您的情况下,method() 是构造函数,名为 A()

【讨论】:

以上是关于具有相同名称的类的构造函数继承的主要内容,如果未能解决你的问题,请参考以下文章

具有引用数据成员的类的默认构造函数?

指向具有私有构造函数的类的类成员的指针

java子类可以继承父类的构造方法吗

用C++设计一个不能被继承的类(转)

为啥具有私有构造函数的类不阻止从此类继承?如何控制哪些类可以从某个基类继承?

Java和CSharp的类继承的执行过程的差异