调用飞艇飞艇时出错没有匹配函数
getting error no matching function for call to AirShip AirShip
我正在尝试修复此错误,但我不知道该怎么办。
#include<iostream>
#include<string>
using namespace std;
class AirShip{
private:
int passenger;
double cargo;
public:
AirShip(int x,double y)
{
passenger=x;
cargo=y;
}
void show ()
{
cout<<"passenger="<<passenger<<endl;
cout<<"cargo="<<passenger<<endl;
}
};
class AirPlane: protected AirShip{
private:
string engine;
double range;
public:
AirPlane(string a,double b)
{
engine=a;
range=b;
}
void show()
{
cout<<"engine="<<engine<<endl;
cout<<"range="<<range<<endl;
}
};
错误是:错误:调用"AirShip::AirShip(("没有匹配函数需要这方面的帮助...我稍后会放主函数,因为错误在这里。
创建AirPlane
时,也会隐式创建其中的AirShip
部分。你也可以像这样编写构造函数:
AirPlane(string a,double b) : AirShip()
{
engine=a;
range=b;
}
但是,AirShip
没有默认构造函数。你基本上有两个选择:
A( 提供一个默认构造函数。默认构造函数是可以在没有参数的情况下调用的构造函数。例如,您可以为乘客和货物数量提供默认参数。但是,我不建议这样做。恕我直言,最好正确初始化构造函数中的所有成员,默认值不是您想要的大多数时间。
B( 正确初始化AirPlane
的AirShip
部分,例如...
AirPlane(string a,double b, int x, double y) :
AirShip(x,y),engine(a),range(b)
{}
。并同时对其他成员使用初始值设定项列表。
由于您的AirPlane
类派生自AirShip
,因此它也需要通过显式调用的AirShip
构造函数或通过(甚至隐式(调用AirShip
-default构造函数来初始化基类。
但是,您的 AirShip
类不提供默认构造函数(可以隐式调用(,并且您的 AirPlane(string a,double b) { ... }
-constructor 不会显式调用任何其他 AirShip
-constructor。
所以要么在AirShip
定义一个默认构造函数,要么引入基类的显式初始化,例如通过编写AirPlane(string a,double b) : AirShip(0,0) {...}
。
相关文章:
- 类中私有结构的构造函数出错
- 字符串验证函数出错
- 我的类默认构造函数出错
- Dev-C++和Code::Blocks中的析构函数出错
- int对的哈希函数出错
- MSVC 编译器错误导致迭代器和友元函数出错
- 复制构造函数出错
- 使用 WinSock2 开发,使用 CreateThread() 函数出错
- 链接列表的Push_back函数出错
- 结构初始化中的隐式复制构造函数出错
- 异步函数出错
- 编译器错误消息错误:令牌之前的预期')' '*'。我的构造函数出错
- c++中使用std::bind和std::函数出错
- 在vector排序中使用c++模板函数出错
- 使用std::for_each lambda函数出错
- 二叉搜索树插入函数出错
- 调用类的函数出错
- c++使用删除函数出错
- 使用已删除的函数出错
- 调用构造函数出错