使用成员初始值设定项列表没有匹配的函数调用错误
No matching function call error using member initializer list
我有 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| error: no matching function for call to
'point::point()'
我的问题是:为什么我在有一个带参数的构造函数时收到此错误?
这看起来像是一个语法错误。我不确定您为什么要在 droite 头文件中重新声明 public point
。
class droite: public point{
point s1;
point s2;
public:
droite(int,int,int,int);
~droite();
};
您将 droite
定义为派生自 point
,然后有 两个 point
成员似乎没有充分的理由droite
个。但是,如果您确实需要这种推导,那么您将需要 显式 调用基 class (point
) 构造函数,其中两个 int
driote
构造函数定义中的参数:
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;
}
我有 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| error: no matching function for call to 'point::point()'
我的问题是:为什么我在有一个带参数的构造函数时收到此错误?
这看起来像是一个语法错误。我不确定您为什么要在 droite 头文件中重新声明 public point
。
class droite: public point{
point s1;
point s2;
public:
droite(int,int,int,int);
~droite();
};
您将 droite
定义为派生自 point
,然后有 两个 point
成员似乎没有充分的理由droite
个。但是,如果您确实需要这种推导,那么您将需要 显式 调用基 class (point
) 构造函数,其中两个 int
driote
构造函数定义中的参数:
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;
}