C++构造函数和 D'tor 中的类

Classes in C++ Constructor and D'tor

本文关键字:tor 构造函数 C++      更新时间:2023-10-16

我有两个类,玩家和游戏。

class Game
{
private:
int maxPlayer;
Player** playersArray;
public:
Game(int maxPlayer);
~Game();
}

playersArray 中的每个索引都由指向类玩家的指针组成。我不确定如何制作类游戏的构造函数和析构函数。这是我的第一次尝试,但代码不起作用?

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);
}

自从我在C++编程以来已经有一段时间了。 我确定的唯一错误是构造函数具有参数 maxPlayer,并且从未接触成员变量 maxPlayer。 析构函数使用成员变量 maxPlayer,该变量可能从未初始化过。 构造函数应将参数分配给成员变量。

当你删除一个数组时,你应该使用delete[],但你对单个对象使用删除。 所以,我认为你已经交换了它们。

好的,由于我的评论没有得到回应,让我试试这个: 如果您按如下所示修改代码,它是否执行您期望的操作?

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;
}