指向数组的指针(动态分配)
我正在用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