gpt4 book ai didi

c++ - 从基指针容器访问派生成员

转载 作者:行者123 更新时间:2023-11-28 06:44:18 25 4
gpt4 key购买 nike

考虑以下代码:

struct Object
{
bool hasComponent(std::string sComponentID);
Component& getComponent(std::string sComponentID);
std::vector<Component*> vComponents;
}

struct System
{
std::vector<Object*> vObjects;
}

我的系统将遍历其 vector 中的每个对象,并且需要从组件的派生成员访问数据(它们都包含不同的状态和数据供系统使用)。我考虑过这样的事情:

struct NetworkComponent : Component
{
std::string sID;
NetworkComponent(std::string tempID) : sID(tempID) {};

//Network data here
}

for(Object* p : vObjects)
{
if(p->hasComponent("network")
{
NetworkComponent& network = static_cast<NetworkComponent&>(p->getComponent("network");
//Access the data in the structure and do stuff with it.
}
}

然而,这确实感觉非常“hacky”;更不用说不安全了。我想知道是否有更好的方法来做这样的事情,或者至少将来如何避免这个问题?

有没有关于这个主题的好文章可供我查阅?编辑:dynamic_cast 不是一个选项,因为它很慢。

最佳答案

听起来您正在尝试重新发明 dynamic_cast

关于c++ - 从基指针容器访问派生成员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25306612/

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