我有两个类,玩家和游戏。
class Game
{
private:
int maxPlayer;
Player** playersArray;
public:
Game(int maxPlayer);
~Game();
}
playersArray中的每个索引都包含指向类Player的指针。我不确定如何制作类游戏的构造函数和析构函数。这是我的第一次尝试,但代码并没有任何想法?
Game::Game(int maxPlayer)
{ this->playersArray = new Player*[maxPlayer];
for(int i=0;i<maxPlayer;i++)
{
playersArray[i]=NULL;
}
}
Game::~Game() {
for(int i=0;i<maxPlayer;i++)
{
delete[] *playersArray[i];
}
delete (playersArray);
}
答案 0 :(得分:0)
自从我用C ++编程以来,它已经存在。我看到的唯一错误是构造函数有一个参数maxPlayer,从不接触成员变量maxPlayer。析构函数使用成员变量maxPlayer,它可能从未被初始化。构造函数应该将参数赋给成员变量。
删除数组时,您应该使用delete [],但对单个对象使用delete。所以,我认为你已经交换了它们。
答案 1 :(得分:-1)
好的,既然我没有得到对我的评论的回复,那么让我试一试:如果您修改了如下所示的代码,它是否按照您的预期进行操作?
class Player
{
};
class Game
{
private:
int maxPlayer;
Player** playersArray;
public:
Game(int maxPlayer);
~Game();
};
Game::Game(int maxPlayer)
{
this->maxPlayer = maxPlayer;
this->playersArray = new Player*[maxPlayer];
for (int i = 0;i<maxPlayer;i++)
{
playersArray[i] = NULL;
}
}
Game::~Game() {
for (int i = 0;i<maxPlayer;i++)
{
delete playersArray[i];
}
delete[] playersArray;
}
int main()
{
Game g(10);
return 0;
}