为什么不能将一个类(Class1)的实例传递给另一个类(Class2)的构造函数,而是必须在Class2对象的声明中创建一个新的Class1对象。
class Class1{
public:
int x;
Class1(){
}
Class1(int x){
this -> x = x;
}
};
class Class2{
public:
int y;
Class1 cInst;
Class2(int y, Class1 cInst){
this -> y = y;
this -> cInst = cInst;
}
};
Class1 a = Class1(0);
Class2 b = Class2(1, a); //error message here : "no instance of constructor "Class2::Class2" matches the argument list -- argument types are: (int, Class1)"
Class2 c = Class2(1, Class1(0)); //this works
我在这里对c的声明有效,但对b无效。我试过与副本构造函数一起玩,但是没有成功。是否可以在C ++中将一个类的实例传递给另一个类的构造函数?