我定义了一个Class,其构造函数由3个整数参数组成。
class A{
int a,b,c;
A(int x,int y,int z){
a=x;
b=y;
c=z;
}
};
现在,另一个类定义如下
class B{
A a;
B(A x){
a=x;
}
};
我得到的错误是
Error: no matching function for call to ‘A::A()’
有人可以帮我定义这两个类吗?
答案 0 :(得分:2)
您没有正确实现构造函数。您需要使用member initialization list:
class B {
A a_;
public:
B(const A& a) : a_(a) {}
};
否则成员a_
将在输入构造函数体之前进行默认构造。您的班级A
没有默认构造函数,因此会导致错误。