C используя typedef или #define для определения структуры [closed]

Я использовал его для создания класса Variant (т. е. объекта, который может представлять одно значение, которое может быть одним из нескольких разных типов).

Если все поддерживаемые типы значений по классу Variant являются типами POD (например, int, float, double, bool), тогда достаточно тегированного объединения C-стиля, но если вы хотите, чтобы некоторые из типов значений были объектами C ++ (например, std :: string), Функция C union не будет выполняться, поскольку типы данных, отличные от POD, не могут быть объявлены как часть объединения.

Поэтому вместо этого я выделяю массив байтов, который достаточно велик (например, sizeof (the_largest_data_type_I_support)) и использует размещение new для инициализации соответствующего объекта C ++ в этой области, когда для параметра Variant установлено значение этого типа. (И размещение удаляется заранее, если вы, конечно, переключаясь с другого типа данных, отличного от POD)

-9
задан user2736738 3 March 2018 в 19:55
поделиться