Как объединить класс «Табло», чтобы классы команды были членами? - PullRequest
0 голосов
/ 30 октября 2019

Я хочу иметь возможность объявлять операторы в int main () как:

Scoreboard s1; //assuming T1 and T2 as public members

s1.T1.setName("Dallas Cowboys");
s1.T2.setName("Houston Texans");

Scoreboard s2; //assuming T1 and T2 as private members passed as parameters accessed with setters and getters

s2.Team1().setName("Dallas Cowboys"); 
s2.Team2().setName("Houston Texans"); 

Это то, что у меня есть в моем main, но в настоящее время выдает ошибку:

  • Нет члена с именем T1 в табло
  • Нет члена с именем T2 в табло

Вторая ошибка исходит от второго табло и выдает точно такую ​​же ошибку, но с той разницей, что вместо использованияТ1, Т2. Он использует Team1 (), Team2 (). Я попытался изменить их имена на T1 и T2, но все равно он не работает: /.

Мой класс на табло выглядит примерно так, но я просто не могу понять свою проблему:

class Scoreboard{
  private:
    Team T1;
    Team T2;
  public:
    Scoreboard(){
      T1.setName(""); 
      T2.setName(""); 
    }
    // Setters
    void setTeam1(Team team1) { T1 = team1; }
    void setTeam2(Team team2) { T2 = team2; }

    // Getters
    Team getTeamOne() const { return T1; }
    Team getTeamTwo() const { return T2; }
    // Print current data stored at Student on demand
    void showScoreboard(){
      cout << "SCOREBOARD CURRENT DATA" << endl;
      cout << "Team1                          Visitor" << endl;
      cout << " " << T1 << "\t\t\t\t\t\t\t\t" << T2 << endl;
    }
};

Ребята, вы не знаете, откуда появилась моя ошибка?

1 Ответ

0 голосов
/ 30 октября 2019

Поскольку T1 и T2 являются private членами Scoreboard, вы не можете получить к ним прямой доступ из объекта s1 класса Scoreboard. Вместо этого вы должны использовать установщик для присваивания значений (объект класса Team в вашем случае).

Поскольку вы уже написали сеттер, setTeam, просто создайте две команды по отдельности и назначьте их объекту класса Scoreboard, используя его. Для примера обратитесь к приведенному ниже коду.

Scoreboard s1; 

// s1.T1 and s1.T2 will not be available here 
// since they are private in Scoreboard class

Team t1;
t1.setName("Team 1");

Team t2;
t2.setName("Team 2");

s1.setTeam1(t1);  // Assigning the Team t1 to s1
s1.setTeam2(t2);  // Assigning the Team t2 to s1

Это поможет вам разобраться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...