gpt4 book ai didi

c++ - 将多个 vector 转换为 void *

转载 作者:行者123 更新时间:2023-11-28 05:03:32 24 4
gpt4 key购买 nike

我目前正在开发 Roguelike,我有多个不同的事件队列(以 vector 的形式),处理多个不同的事件类别。或者更确切地说,不同的游戏对象有自己的私有(private)事件队列。

在 map 图 block 数据中,我有一个特殊的触发器结构,当玩家(或其他任何东西)进入图 block 时激活。此瓦片结构提供用于生成事件标志的数据,然后需要将其放置到适当的事件队列中。

瓦片结构如下:

struct tile{
int t_type;
trigger t_dgram;

vector<actor*> occupied;
vector<item*> loot;
public:
void trigger_tile(int ns, int we, );
};

触发器结构本身可以保存用于确定哪个队列是合适队列的信息,但是保存指向 map 中每个图 block 的所有可能事件队列的指针是不可行的,尤其是当我让 map 动态生成动态地形时对于无限 map 。

所以问题是双重的:在调用函数时将 vector 转换为 void 指针是否是个好主意:

void tile :: trigger_tile(int ns, int we, void *queue_ob);

tile 对象本身将能够确定正确的队列 vector 类型并使用 trigger t_dgram 成员变量取消引用 void 指针,但这是个好主意吗?这有什么我不知道的危险吗?

您个人建议我如何实现类似的效果?

感谢您的宝贵时间。

最佳答案

“触发器”对我来说听起来像是一个类。

struct Trigger {
virtual void triggeredOn(tile *tile) = 0;
}

然后 tile 有一个指向它的触发器的指针:

struct tile{
...
...
Trigger *trigger;
void trigger_tile(int ns, int we, ){trigger.triggeredOn(this)};
};

现在从 Trigger 派生的类可以保存指向任何队列的指针,甚至可以做一些不涉及队列的事情。

关于c++ - 将多个 vector 转换为 void *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45354496/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com