使用成员初始值设定项列表时没有匹配的函数调用错误



我有2个类:pointdroite

点的头文件:

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();
};

德罗伊特的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);
}

输出是:

德罗伊特.cpp|12| 错误:调用没有匹配函数 'point::p oint(('

我的问题是:为什么当有一个带有点参数的构造函数时,我会收到此错误?

似乎没有充分的理由将droite定义为派生自point,然后有两个pointdroite成员。但是,如果你确实需要这个派生,那么你将需要显式调用基类(point(构造函数,在你的driote构造函数的定义中使用两个int参数:

droite::droite(int a, int b, int c, int d) : point(0,0), s1(a, b), s2(c, d)
{
cout << "++ constructor of droite " << a << "" << b << "" << c << "" << d << endl;
}

这看起来像一个语法错误。我不确定您为什么要在 droite 头文件中重新声明public point

class droite: public point{
point s1;
point s2;
public:
droite(int,int,int,int);
~droite();
};

最新更新