gpt4 book ai didi

c++ - 继承类的构造函数格式

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:24:02 25 4
gpt4 key购买 nike

我在 linux 系统上用 c++ 编程上课。我有一个类 Queue 和一个类 Sim,它们继承了 Queue 的公共(public)成员。队列编译和测试正常。但是,当我尝试为类 Sim 编写构造函数时,出现错误。

我省略了不相关的代码。

错误:

~$ make -f p04make

make: Warning: File `Sim04.cpp' has modification time 7.2 s in the future

g++ -g -c Sim04.cpp

Sim04.cpp: In constructor âSim::Sim(int)â:

Sim04.cpp:28:64: error: no matching function for call to âQueue::Queue()â

Sim04.cpp:28:64: note: candidates are: Queue04.h:27:3: note: Queue::Queue(int)

Queue04.h:27:3: note: candidate expects 1 argument, 0 provided

Queue04.h:19:7: note: Queue::Queue(const Queue&)

Queue04.h:19:7: note: candidate expects 1 argument, 0 provided

make: * [Sim04.o] Error 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是不是对的?

最佳答案

您必须使用一些 int 参数从 Sim 构造函数调用 Queue 构造函数。所以你必须改变:

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);

关于c++ - 继承类的构造函数格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21865915/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com