c++ - 调用子方法

标签 c++ abstraction object-slicing

在我的 C++ 项目中,我有一个名为 Trap 的类。陷阱是 NPC,NPC 是实体。现在我想遍历所有 NPC 并与他们一起做事。例如,我想要更新一个 Trap。我通过以下方式做到这一点。

for (vector<NPC>::iterator it = Enemies.begin(); it != Enemies.end(); ++it) {
    it->Update();
}

但现在 Update() 调用正在调用 NPC::Update() 方法。

我确信这是因为我使用迭代器的方式,但我不知道如何更好地做到这一点。使用不同类型的迭代?有一个简单的技巧吗?

最佳答案

你有Slicing问题。

Enemies应该是 std::vector<std::unique_ptr<NPC>> (或其他智能指针)或 std::vector<NPC*>

关于c++ - 调用子方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28740231/

相关文章:

c++ - 如何用 c/c++ 填充我的 md5 消息

c++ - 如何从 AM_MEDIA_TYPE 中获取 MEDIASUBTYPE 的名称,c++

Java:具有具体实现的抽象枚举

c - C 中的泛型函数指针

c++ - 使用 std::enable_if 时的对象切片

c++ - 什么是对象切片?

C++ std::initializer_list data() 函数错误

c++ - 为什么挂钟比 cpu 用户/内核时间高很多

c# - C# 中的协议(protocol)抽象

c++ - 父类对象的动态数组,用于保存子对象