指向指针数组的指针(动态分配)
Pointer to array of pointers (dynamic allocation)
我正在用C 编写纸牌游戏。我有一个 Game 类,可以跟踪球员。我也有一个抽象的基类 player ,从中 person 和 Computer dered。
我想让球员保持一段阵列。在编译时,玩家数量未知。因为有些玩家是人和其他计算机,所以我需要每个播放器指针,并存储在一个数组中,该数组是动态分配的,因为玩家的数量未知,对吗?
由于我对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是键入播放器的指针。它可以保存播放器的地址以及一组玩家。在C 和C数组中,可以作为指向数组的第一个元素的指针。
根据您的要求,您可以动态分配数组。
playerptr=new Player[20];
这里20是数组的大小。
playerptr=new Player[20]();
第二种语法将将数组中的所有元素初始化为默认值。
相关文章:
- 在对象指针上调用 Delete 是否会递归删除其动态分配的成员
- 使用指针在存在特征库的情况下动态分配 c++ 中的矩阵
- 尝试创建指向动态分配的字符数组的指针
- 如何动态分配由三重指针到类的矩阵?
- 将数组动态分配到具有指针参数的函数中
- 如何从文件读取到动态分配的指向结构的指针链表中?
- 是否可以将函数动态分配给函数指针
- 将动态分配的对象添加到对象指针数组中
- 如何为const char double指针(使用新的)动态分配内存
- 动态分配的矩阵不会获得指向指针的指针
- 使用 new: "potentially uninitialized pointer"将对象数组动态分配给指针
- 将运算符重写应用于具有动态分配指针的类
- 我可以动态分配以前分配的内存,但用不同的指针分配
- C 删除指向动态分配对象的指针
- 在动态分配的指针数组中扩展内存
- 指针数组在动态分配时应指向什么
- 指针动态分配(核心倾倒)
- 指向指针数组的指针(动态分配)
- 双指针动态分配
- 如何使用指针动态分配内存