C++父方法对子指针的访问
C++ parent method access to child pointers
我对C++很陌生,我正在玩一个小Roguelike游戏。我有一个名为Actor
的泛型类,它有 2 个子类,NPC
和Player
。这个想法是让每个孩子包含特定的数据,例如杀死 NPC 提供的经验或玩家的统计数据,以及特殊方法。另一方面,Actor
包含移动等常规方法,因为玩家和NPC都应该移动。
现在我有一个vector of NPC pointers
,我的移动方法应该检查目标图块是否被 NPC(和其他一些 NPC 信息)占用,但我无法从Actor
访问该类。我在Actor
内部添加了一个前向声明以NPC
,但随后出现此错误:
不允许指向不完整类类型的指针
因为前向声明不足以访问NPC
方法。
演员:
class NPC; // Forward declaration.
class Actor
{
public:
void move(std::vector<std::unique_ptr<NPC>> & NPCs);
}
演员.cpp:
void Actor::move(std::vector<std::unique_ptr<NPC>> & NPCs)
{
// Go through the NPCs.
for (const auto &NPC : NPCs)
{
if (NPC->getOutlook() > 0) ... // Error.
}
}
我可以将 move 方法放在NPC
和Player
中,但我会复制代码,这是一个非常糟糕的主意。
这里最好的解决方案是什么?我想有一种更好的方法来组织它,但它似乎很合乎逻辑。也许是某种继承或虚函数魔法?
谢谢! :)
您需要在Actor.cpp中包含定义NPC的标题,否则NPC的定义将丢失。
// Actor.cpp
#include "NPC.h"
void Actor::move(std::vector<std::unique_ptr<NPC>> & NPCs)
{
// Go through the NPCs.
for (const auto &NPC : NPCs)
{
if (NPC->getOutlook() > 0) ... // Now you'll be able to access this.
}
}
相关文章:
- 通过指向指针数组的指针访问子类的属性
- 使用指针访问数组中的对象数据成员
- 无法通过指针访问对象的成员
- decltype:使用指针访问类的静态成员
- 是否可以使用指针访问变量以避免直接编辑变量?
- 为什么 C++ 地址中的矢量无法通过原始指针访问
- 使用指针访问数组元素时出现意外结果
- 使用指针访问数组的值
- C++继承从基类指针访问派生类中的非虚拟函数
- 如何使用指针访问成对向量的元素
- 为什么有些库提供无指针访问,而另一些库则不提供
- 如何通过引用或指针访问二维矢量
- 使用指针访问参数接收的结构中的元素时内存泄漏
- 我正在学习C++,我不能使用指针访问参考吗?(举个例子)
- 复制堆栈上的成员值或使用指针访问它?
- C++娜娜 如何从全局列表框*指针访问列表框内的索引 0 上的按钮?
- 通过此指针访问时的成员差异和自身的成员指针(简单的 QT 示例问题)
- 从指针访问 Kaguya Lua 状态
- 说明通过指针访问非静态类成员函数
- 有没有办法使用初始化到第一行的指针访问 2d 数组的第二行?