0

メインで作成された競合オブジェクト (スターター) を、読み込まれるオブジェクトへのポインターの配列として読み込まれる競合オブジェクトを格納するランカー オブジェクトにロードしようとしています。メイン関数からクラスのストレージにすべてのオブジェクトを読み取るにはどうすればよいですか?

ランカー.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]);
4

1 に答える 1

1

を使用しstd::vector<Competitor>て競合他社を保存し、 で追加しますpush_back()

于 2013-07-19T20:21:51.327 に答える