将类的实例传递给不同类的C ++的构造函数

时间:2020-08-28 20:54:15

标签: c++ oop constructor

为什么不能将一个类(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 ++中将一个类的实例传递给另一个类的构造函数?

0 个答案:

没有答案