gpt4 book ai didi

c++ - 将对象加载到指向对象的指针数组中

转载 作者:行者123 更新时间:2023-11-28 07:30:52 25 4
gpt4 key购买 nike

我正在尝试将在 main 中创建的竞争对手对象(启动器)加载到一个排名对象,该对象存储竞争对手对象,这些对象作为指向所读对象的指针数组读入。出于某种原因,它只读取第一个传入的对象。如何将主函数中的所有对象读取到类中的存储中?

排序器.cpp:

#include "ranker.h"
#include "competitor.h"
#include <stdlib.h>

Ranker::Ranker(int lanes) {
athlete = new Competitor*[lanes]; // fix
numAthletes = 0;
maxAthletes = lanes;
}

int Ranker::addList(Competitor* starter) {
if (numAthletes < maxAthletes && &starter != NULL) {
athlete[numAthletes] = starter;
numAthletes++;

return numAthletes;
}
else
return 0;
}

Competitor* Ranker::getLane(int lane) {
for (int i = 0; i < numAthletes; i++) {
if (athlete[i]->getLane() == lane - 1) {
return athlete[i];
}
}
}

Competitor* Ranker::getFinish(int position) {
switch(position) {
case 1:
return athlete[3];
break;
case 2:
return athlete[2];
break;
case 3:
return athlete[1];
break;
case 4:
return athlete[0];
break;
}
}

int Ranker::getFilled() {
return numAthletes;
}

Ranker::~Ranker() {
delete athlete;
}

排序器.h:

#ifndef _RANKER_H
#define _RANKER_H

#include "competitor.h"

class Ranker {
private:
Competitor** athlete;
int numAthletes;
int maxAthletes;
public:
Ranker(int lanes);
int addList(Competitor* starter);
Competitor* getLane(int lane);
Competitor* getFinish(int position);
int getFilled();
~Ranker();
};

#endif

部分主要功能:

for (int i = 0; i < lanes; i++)
rank.addList(starters[i]);

最佳答案

使用 std::vector<Competitor> 存储您的竞争对手,并使用 push_back() 添加它们.

关于c++ - 将对象加载到指向对象的指针数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17754743/

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