使用成员初始化器列表没有匹配的函数调用错误

我有2个课程:pointdroite

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);
        ~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()'

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

ilovejingye 回答:使用成员初始化器列表没有匹配的函数调用错误

您似乎没有充分的理由将droite定义为从point派生,然后又有{strong>两个 point个成员{{1} }。但是,如果确实需要此推导,则需要对{的定义中有两个droite的基类(point)构造函数进行 explicit 调用。 {1}}构造函数:

int
,

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

class droite: public point{

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

};
本文链接:https://www.f2er.com/2842609.html

大家都在问