类类型作为变量,并在c ++的构造函数中使用它

时间:2017-12-12 18:33:26

标签: c++

class c1{
public:
    c1(int AO, int AE){
        x=AO;
        y=AE;
    }

private:
    int x,y;
};


class c2{
public:


//c2(int x, int y, bool target): obj1(x, y), flag(target){}


c2(int x, int y, bool target){
  obj1=c1(x,y)
  flag=target;
}

private:
    c1 obj1;
    bool flag;
};

如果我在评论中用构造函数编写该行,它就会运行。我怎样才能编写c2(int x,int y,bool target)来编译? (错误信息不匹配函数,用于调用' c1:c1()')

1 个答案:

答案 0 :(得分:1)

c2(int x, int y, bool target): obj1(x, y), flag(target){}

当它开始执行时,使用:调用来确定如何构造每个成员。这使用object1(x,y)构造函数,然后使用flag(target)构造函数,然后调用为空的正文。这是有道理的。

c2(int x, int y, bool target){
  obj1=c1(x,y)
  flag=target;
}

当它开始执行时,它使用:调用来确定如何构造每个成员。由于这是空的,它使用obj1flag的默认构造函数,然后想要调用正文。但是最初的构造函数显然无法编译,因为obj1没有默认构造函数! no matching function for call to 'c1:c1()'