指向数组的指针(动态分配)

我正在用C ++编写一个纸牌游戏。 我有一个跟踪玩家的游戏课程。 我也有一个抽象的基础班级球员,班级人员和计算机从中派生出来。

我想保持阵容中的球员。 玩家人数在编译时是未知的。 因为有些玩家是个人和其他计算机,所以我需要一个玩家指针,存储在一个数组中,由于玩家的数量是未知数而被动态分配的,对吗?

由于我对C ++比较陌生,因此我无法弄清楚语法是如何寻找这种东西的。


对于动态数组,标准库提供了std::vector

由于您需要存储指向抽象基本类型的指针,而不是对象本身,因此您需要确保正确管理对象的生存期。 最简单的方法是存储智能指针(在本例中为std::unique_ptr ,用于简单的单一所有权),以便在从矢量中移除对象时自动销毁对象。

所以你的数组看起来像

// Declaration
std::vector<std::unique_ptr<player>> players;

// Adding players
players.push_back(std::unique_ptr<person>(new person("Human"))); // C++11
players.push_back(std::make_unique<computer>("CPU"));            // C++14 (hopefully)

// Accessing players
for (auto & player : players) {
    player->play();
}

你需要

std::vector<std::shared_ptr<Player>> players;

如果你想使用标准库(你应该)

除此以外

Player** players;

您可以使用如下所示声明一个指针变量

Player *playerptr;

这意味着playerptr是一个指向Player类型的指针。它可以包含一个Player的地址以及一个Players数组。在C ++和C数组中实现为指向数组的第一个元素的指针。

根据您的要求,您可以动态分配数组。

playerptr=new Player[20];

这里20是数组的大小。

playerptr=new Player[20]();

第二种语法将初始化数组中的所有元素为默认值。

链接地址: http://www.djcxy.com/p/72919.html

上一篇: Pointer to array of pointers (dynamic allocation)

下一篇: Static array vs. dynamic array in C++