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