小编min*_*yor的帖子

使用C++基类构造函数?

在使用模板时,我遇到了一个需要,可以从继承的类访问基类构造函数来创建对象,以减少复制/粘贴操作.我想通过using关键字以与功能案例相同的方式做到这一点,但这不起作用.

class A
{
public: 
    A(int val) {}
};

class B : public A
{
};

class C : public A
{
public:
    C(const string &val) {}
};

class D : public A
{
public:
    D(const string &val) {}
    using A::A;              // g++ error: A::A names constructor
};

void main()
{
    B b(10);                // Ok.   (A::A constructor is not overlapped)
    C c(10);                // error: no matching function to call to 'C::C(int)'
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:在声明了继承类中的新构造函数后,有没有办法导入基类构造函数?

或者只有一个替代方法来声明新构造函数并从初始化列表中调用基础构造函数?

c++ inheritance constructor c++11

50
推荐指数
3
解决办法
9万
查看次数

标签 统计

c++ ×1

c++11 ×1

constructor ×1

inheritance ×1