对子进程使用父类构造函数

时间:2015-02-01 11:16:08

标签: c++ visual-studio c++11 constructor polymorphism

所以,我希望类Child具有来自其父类的所有构造函数。这在C ++中是否可行?我试过using声明,但它不起作用。这是我到目前为止所得到的:

struct Base{
    Base(int i){
        std::cout << "Construcetd a base with " << i << std::endl;
    }


};


struct Child : public Base{
    using Base::Base;

};




int main(){

    Child c(1);
}

我收到的错误:

error C2664: 'Child::Child(const Child &)' : cannot convert argument 1 from 'int' to 'const Child &'

哦,我正在使用Visual Studio 2013

3 个答案:

答案 0 :(得分:3)

继承构造函数是C ++ 11语言特性,

struct A { A(int); };
struct B: A { using A::A; }; // defines B::B(int)
B b(42); // OK

但是,msdn中记录的Visual Studio 2013不支持它。

答案 1 :(得分:1)

正如您所见here,继承构造函数是Microsoft Visual Studio尚不支持的C ++ 11特性。

您发布的代码是正确的,并且正如预期的那样使用C ++ 11编译器works

答案 2 :(得分:0)

编译器尝试调用默认的Child构造函数(不带参数)。因此,要使代码工作,您需要提供显式构造函数:

struct Child : public Base{
    using Base::Base;
    Child(int i):Base(i) {}

};
相关问题