我有2个课程:point
和droite
。
Point的头文件:
class point
{
int abs,ord;
public:
point(int,int);
~point();
};
点的cpp文件
point::point(int a,int b):abs(a),ord(b)
{
cout<<"++ constructor point "<<abs<<" "<<ord<<endl;
}
point::~point()
{
cout<<"-- destruction abs= "<<abs<<"et ord= "<<ord<<endl;
}
Droite的头文件:
class droite: public point{
point s1;
point s2;
public:
droite(int,int,int,int);
~droite();
};
Droite的cpp文件
droite::droite(int a,int b,int c,int d):s1(a,b),s2(c,d)
{
cout<<"++ constructor of droite "<<a<<""<<b<<""<<c<<""<<d<<endl;
}
droite::~droite(){ cout<<"destructor of droite "<<endl;}
主要
int main(){
droite A(1,2,3,4);
}
输出是:
droite.cpp | 12 |错误:没有匹配的调用函数 'point :: point()'
我的问题是:当有一个带有指向点的参数的构造函数时,为什么会出现此错误?
答案 0 :(得分:1)
您似乎没有充分的理由将droite
定义为从point
派生,然后又有{strong>两个 point
个成员{{1} }。但是,如果确实需要此推导,则需要对{的定义中有两个droite
的基类(point
)构造函数进行 explicit 调用。 {1}}构造函数:
int
答案 1 :(得分:0)
这看起来像语法错误。我不确定为什么您要在droite头文件中重新声明public point
。
class droite: public point{
point s1;
point s2;
public:
droite(int,int,int,int);
~droite();
};