2012-04-13 8 views
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!"; 
    } 
} 
+0

Помните, что вы возвращаете объекты по значению, а не по ссылке. Это означает, что код типа '++ t1.get_player (0) .playerRank;' will * not * изменяет ранжирование первого игрока. – DCoder

+0

Я не пытаюсь изменить ранг игрока, но чтобы добавить ранг всех игроков в команде. – user1332364

+0

Я знаю об этом, просто упомянул об этом, поэтому вы не путешествуете по этому поводу в какой-то другой ситуации. – DCoder

ответ

8

Похоже, что вы хотите сделать что-то вроде:

t1rank += t1.get_player(i).get_rank(); 

В C++, вызовы методов имеют вид object.method(args). В вашем случае у вас есть два вызова метода, один из которых: object - t1, а метод - get_player, а второй, где объектом является возвращаемое значение предыдущего вызова, а метод - get_rank.

+0

Да! Определенно сделал трюк. Спасибо! – user1332364

Смежные вопросы