gpt4 book ai didi

c++ - dynamic_cast 还是冗余?

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

在我的系统中,低层级对象通过调用+1 级层级对象的函数与高层级对象通信,调用+1 级层级对象的函数,等等,直到函数调用停止在配方处.

有一个Message抽象类,还有很多派生类,分别保存着不同种类的数据。喜欢:

  • FruitMessage: string, int

  • 坐标信息: float , float , float

等等等等

我之前提到的那些方法需要 Message 对象,因此这种链式调用是通过一种方法完成的,而不是为所有 Message 类型创建方法。

问题来了,当配方接收到消息对象时。

接收者想知道消息中的内容,因此它可以根据消息类型的需要处理接收到的消息

(比如FruitMessages中的整数减1,CoordinateMessages中的坐标除以等)

目前我有两个想法,但也许没有一个是正确的,我应该使用第三个。 (请告诉我)

  • 当它不是正确的类型时,配方会对其进行 dynamic_cast。

  • Message 有一个名为 MessageType 的枚举字段,它在派生类的构造函数中初始化为正确的值,因此 recient 在此过程中仅使用一个 switch-case。

我的问题是裁员是否值得?

  • dynamic_cast 比整数检查慢

  • 但每次我创建一个新的 Message 类时,我都必须创建一个新的枚举值。

我该怎么办?

最佳答案

两种方式都可以。冗余与速度是软件开发中非常普遍的问题。我会选择 dynamic_cast,因为冗余是解决错误的第一步,但这完全取决于您,并且取决于您的性能要求。我在使用 Akka 时看到了非常相似的问题,他们通常使用 dynamic_cast(我的意思是 java/scala 类似物)

关于c++ - dynamic_cast 还是冗余?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41514905/

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