c++ - dynamic_cast 还是冗余?

标签 c++ casting redundancy

在我的系统中,低层级对象通过调用+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/

相关文章:

Azure Blob 存储 : Does Microsoft Implement Redundant Backups?

nginx - 如何在Nginx中使用fastcgi_next_upstream

c++ - 访问 DSN 有哪些访问限制

c++ - 带有指针的错误 LNK2019

c# - 我不明白有关 .NET 继承/转换的某些内容?

java - java中类型转换时出错

java - 尝试显示数据库数据时转换集合时出现问题

c++ - 如何获取集合中前 100 个名字

c++ - 在系统级别监听关键事件

PHP 性能和冗余