所以我有一个名为package的类有一堆变量。我有所有的get / set方法和一个构造函数。
我有两个名为twoDay和threeDay的派生类继承了包类,需要使用它的构造函数。
包类的构造函数:
package::package(string sN, string sA, string sC, string sS, int sZ, string rN, string rA, string rC, string rS, int rZ, int w, int c) {
this->senderName = sN;
this->senderAddress = sA;
this->senderCity = sC;
this->senderState = sS;
this->senderZip = sZ;
this->receiverName = rN;
this->receiverAddress = rA;
this->receiverCity = rC;
this->receiverState = rS;
this->receiverZip = rZ;
this->weight = w;
this->cpo = c;
}
我一直在使用此代码作为threeDay标头中的构造函数:
threeDay(string, string, string, string, int, string, string, string, string, int,int,int);
我需要做的是让twoDay和ThreeDay能够使用构造函数。 我的意思是派生包需要能够使用基类构造函数。
我目前收到此错误:
threeDay.cpp:10:136: error: no matching function for call to ‘package::package()’
我从这个链接做了一些研究:http://www.cs.bu.edu/teaching/cpp/inheritance/intro/
和此链接:C++ Constructor/Destructor inheritance
所以好像我没有直接继承构造函数,我仍然需要定义它。如果是这样的话,为什么我的代码现在不工作?
但我似乎无法让它发挥作用。
一旦我让施工人员工作,它就会顺利航行。
答案 0 :(得分:3)
由于package
没有默认构造函数(即不带参数的构造函数),因此需要告诉派生类如何构建package
。
执行此操作的方法是在派生类的初始化列表中调用基类构造函数,如下所示:
struct Base
{
Base(int a);
};
struct Derived : public Base
{
Derived(int a, string b) : Base(a) { /* do something with b */ }
};