我正在使用OpenSplice DDS6.4OSS与C++ ( C++11绑定)版本。如果我尝试默认构造一个主题实例并发送它,可能会修改它的一些字段,那么我就会在作者的内心深处发现访问冲突异常。这是一个错误,还是默认构造的对象无效的行为?
我使用的IDL有很多联盟,我有一个感觉可能是相关的。
发布于 2015-01-16 11:10:05
从IDL到C++语言映射显示了联合的默认初始化
默认的联合构造函数不执行联合的应用程序可见初始化。它不初始化鉴别器,也不将任何联合成员初始化为对应用程序有用的状态。(默认构造函数的实现可以执行它想要的任何类型的初始化,但是这种初始化依赖于实现。任何兼容的应用程序都不能指望仅由默认构造函数正确地初始化联合。)
因此,构造默认初始化的主题实例并将其发送到线路上是不安全的。
作为参考,从IDL到C++11语言映射如下
默认的联合构造函数初始化联合。如果指定了默认情况,则将联合初始化为此默认情况。如果联合具有隐式默认成员,则初始化为该情况。在所有其他情况下,它被初始化为空。分配、复制、移动和破坏默认构造的联合是安全的。
https://stackoverflow.com/questions/27947041
复制相似问题