Можно ли опубликовать созданный по умолчанию тип темы DDS?

Я использую OpenSplice DDS 6.4 OSS Edition с C++ (привязки C++11). Если я попытаюсь создать экземпляр темы по умолчанию и отправить его, возможно, изменив некоторые из его полей, я получу исключения о нарушении прав доступа где-то в кишке автора. Является ли это ошибкой или подразумевается, что созданный объект по умолчанию недопустим?

У IDL, который я использую, много профсоюзов, которые у меня могут быть срублены.

1 ответ

Решение

Отображение языка IDL в C++ говорит следующее об инициализации по умолчанию объединений

Конструктор объединения по умолчанию не выполняет видимой для приложения инициализации объединения. Он не инициализирует дискриминатор и не инициализирует членов объединения в состояние, полезное для приложения. (Реализация конструктора по умолчанию может выполнять любой тип инициализации, который он хочет, но такая инициализация зависит от реализации. Ни одно совместимое приложение не может рассчитывать на объединение, когда-либо должным образом инициализированное одним конструктором по умолчанию.)

Поэтому небезопасно создавать инициализированный экземпляр темы по умолчанию и отправлять его по сети.

В качестве ссылки, отображение языка IDL в C++11 говорит следующее

Конструктор объединения по умолчанию инициализирует объединение. Если задан регистр по умолчанию, объединение инициализируется в этом регистре по умолчанию. Если объединение имеет неявного члена по умолчанию, оно инициализируется в этом случае. Во всех остальных случаях он инициализируется как пустой. Назначение, копирование, перемещение и уничтожение созданных по умолчанию союзов безопасны.

Другие вопросы по тегам