gpt4 book ai didi

c++ - 如何根据运行时类型而不是基本类型对列表中的对象进行操作?

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

在我的程序中,我有一个基本对象类和一个 vector 。我有一个要对每个 Object* 执行的操作,但是该操作取决于 Object* 的最派生类。因此,我使用访客模式。但是,我发现访问者模式会导致大量耦合;每当我添加一个新的 Object 派生类时,我都必须更改基 Visitor 和派生自 Visitor 的每个类。

有没有一种更简单的方法可以根据对象的运行时类型对对象列表执行操作,而不会导致如此高的耦合度?

最佳答案

class Object
{
virtual void action() = 0;
/* ... */
};

void objectAction(Object * o) { o->action(); }

int main()
{
std::vector<Object*> v;
std::for_each(v.begin(), v.end(), objectAction);
}

现在只需在每个派生类中实现action

关于c++ - 如何根据运行时类型而不是基本类型对列表中的对象进行操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6496499/

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