【发布时间】:2015-04-12 03:58:19
【问题描述】:
在Class Championship的成员函数中,我尝试创建动态对象并调用Class Game的成员函数,但收到错误消息error: expected primary-expression before '[' token。如何纠正?
class Championship
{
public:
Championship(string,int);
void CreateGame();
void display();
private:
int gamenum;
};
class Game
{
public:
friend class Championship;
void Getteam();
};
void Championship::CreateGame()
{
Game *game = new Game[gamenum];
for (int i = 0; i < gamenum; i++)
Game[i].Getteam();
}
【问题讨论】:
-
空白和缩进会提高可读性很多。
-
我遗漏了一些东西,比如冠军的定义。 Game 类可能应该在 CreateGame() 之前定义。
-
即使
Game的前向声明也不会这样做,因为Game *game = new Game[gamenum];Game必须是完整类型。因此,只需先声明类,然后再实现它们的功能。而且,正如@Jasper 所提到的,Game必须在Championship之前声明。 -
Game[i].getteam()不正确。Game是类型而不是变量。 -
game而不是Game:最后是一个简单但微妙的错字;-)