【问题标题】:Mixing types in QuickFIX/C++QuickFIX/C++ 中的混合类型
【发布时间】:2013-11-11 19:16:03
【问题描述】:

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

【问题讨论】:

    标签: c++ visual-c++ window quickfix


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-10-19
      • 2011-04-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-19
      • 2011-02-09
      相关资源
      最近更新 更多