所以,我希望类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
答案 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)
答案 2 :(得分:0)
编译器尝试调用默认的Child
构造函数(不带参数)。因此,要使代码工作,您需要提供显式构造函数:
struct Child : public Base{
using Base::Base;
Child(int i):Base(i) {}
};