2
我是C++的新手,我試圖編寫一個模擬足球比賽的程序。我得到一個編譯器錯誤,說明函數get_rank,get_player和get_name未在此範圍內聲明。任何幫助是極大的讚賞!函數「未在此範圍內聲明」
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Player {
int playerNum;
string playerPos;
float playerRank;
public:
void set_values(int, string, float);
float get_rank(){ return playerRank; };
};
class Team {
Player team[];
string teamName;
public:
void set_values(Player[],string);
Player get_player(int a) { return team[a]; };
string get_name() { return teamName; };
};
void play(Team t1, Team t2){
float t1rank = 0.0;
float t2rank = 0.0;
for(int i=0; i<11; i++){
t1rank += get_rank(get_player(t1, i));
}
for(int j=0; j<11; j++){
t2rank += get_rank(get_player(t2, j));
}
if(t1rank>t2rank){
cout << get_name(t1) + " wins!";
}
else if(t2rank>t1rank){
cout << get_name(t2) + " wins!";
}
else{
cout << "It was a tie!";
}
}
請注意,您是通過值返回對象,而不是通過引用。這意味着像'++ t1.get_player(0).playerRank'這樣的代碼將不會修改第一個玩家的等級。 – DCoder 2012-04-13 19:41:44
我並沒有試圖修改玩家的等級,而是加入了隊伍中所有玩家的等級。 – user1332364 2012-04-13 19:44:04
我意識到這一點,剛剛提到它,所以在其他一些情況下您不會絆倒它。 – DCoder 2012-04-13 19:46:58