我正在使用Linux系统上的C ++进行类编程。我有一个Queue类和一个Sim类,它继承了Queue的公共成员。队列正在编译和测试正常。但是,当我尝试为Sim类编写构造函数时,出现错误。
我省略了无关的代码。
错误:
〜$ make -f p04make
make:警告:文件“ Sim04.cpp”的修改时间为7.2 s
g ++ -g -c Sim04.cpp
Sim04.cpp:生成器Asim :: sim(int)A:
Sim04.cpp:28:64:错误:没有匹配函数调用Queue :: Queue()
Sim04.cpp:28:64:注意:候选者是:Queue04.h:27:3:注意:Queue :: Queue(int)
Queue04.h:27:3:注意:候选人期望1个参数,提供0个
Queue04.h:19:7:注意:Queue :: Queue(const Queue&)
Queue04.h:19:7:注意:候选人期望1个参数,提供0个
make:* [Sim04.o]错误1
在Queue.h中:
class Queue {
int* Q;
int oldest;
int newest;
int size;
int count;
public:
Queue(int sz);
在Queue.cpp中:
Queue::Queue(int sz = 100)
:oldest(0), newest(-1), size(sz),count(0)
{Q = new int[size];}
在Sim.h中:
class Sim:public Queue{
int served;
int totalresponse;
int maxresponse;
void arrival(int time);
void departure(int time);
void Print(ostream& o, char* t, int v, char* u);
public:
Sim();
在Sim.cpp中:
Sim::Sim():served(0), totalresponse(0), maxresponse(0) {}
这些文件都链接到一个主程序文件中,而我正在使用一个makefile进行编译。我承认我不完全了解该构造函数的外观,但是我根据我们一直在使用的构造函数对其进行了建模。我是否认为构造函数应该继承Queue的构造函数并自动将Sim构造为Queue是不对的?
您必须使用一些参数Queue
从Sim
构造函数中调用构造int
函数。因此,您必须更改:
Sim::Sim():served(0), totalresponse(0), maxresponse(0) {}
对于类似的东西:
Sim::Sim(int sz=100):Queue(sz), served(0), totalresponse(0), maxresponse(0) {}
您还需要修改Sim
构造函数声明以接收所需的参数Queue
。
Sim(int sz);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句