0

我一直在使用 quickfix 和 Visual Studio,发现我可以从 FIX41::NewOrderSingle 初始化 FIX42::NewOrderSingle 的实例,而没有编译器问题,甚至在运行时也没有问题。当我有一个带有 FIX::Message 等参数的方法时也是如此,我可以毫无问题地传入 FIX41::NewOrderSingle 或 FIX42::NewOrderSingle。这使我无需为每个类型参数创建重载方法。这是一件好事吗?还是我自找麻烦?谢谢

4

1 回答 1

2

您可以将 FIX::Message 作为参数传递,但您将无法使用生成的类型安全字段访问器。如果您需要灵活性而不是类型安全,这不一定是一件坏事,但这意味着您必须更加小心地访问和解释消息数据。

接受另一个 FIX::Message 的 FIX::Message 构造函数将源消息的内部 FieldMap 从一条消息复制到另一条消息。这对于来自不同 FIX 版本的两个 NewOrderSingles 可能会工作得相当好,但要注意在版本之间修改了类型或在一个版本或另一个版本中不存在的字段。实际上,您可以使用采用 FIX::Message 的任何其他子类型的构造函数来构造任何生成的消息。但是,如果消息不相关,这可能没有用,因为如果源消息的字段可能对目标消息无效,尽管它不会导致编译时或运行时错误。

于 2013-11-16T12:30:00.853 回答