我收到以下错误:没有匹配函数调用'A :: A()'?

时间:2014-05-31 16:53:39

标签: c++ class

我定义了一个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()’

有人可以帮我定义这两个类吗?

1 个答案:

答案 0 :(得分:2)

您没有正确实现构造函数。您需要使用member initialization list

class B {
  A a_;
public:
  B(const A& a) : a_(a) {}
};

否则成员a_将在输入构造函数体之前进行默认构造。您的班级A没有默认构造函数,因此会导致错误。