У меня есть класс
class myTestClass
{
public:
int a;
myTestClass();
~myTestClass();
private:
float b;
};
, который я пытаюсь добавить в объединение
union myUnion
{
myTestClass mt;
int l;
float f;
};
В Visual Studio 2013 я получаю ошибку "Недопустимый член объединения - класс"myTestClass "имеет запрещенную функцию-член.Похоже, это сообщение вызвано конструктором (а не другой функцией, которую я пытался добавить).
При тестировании в Visual Studio 2015 ошибка, похоже, исчезла.К сожалению, проект находится на VS2013 и не может быть перемещен (или, по крайней мере, он не будет для этой одной маленькой проблемы).
Если посмотреть на этот вопрос , то кажется, чтоКонструкция считается недопустимой функцией-членом, но разрешена в C ++ 11.Я предполагаю, что эта часть спецификации была введена между VS13 и VS15.
Почему конструктор специально запрещен, а не другая функция?Есть ли способ обойти это в VS2013?Один из ответов на вопрос, упомянутый выше, предложил поместить класс в структуру в объединении.Однако мой союз уже находится в другой структуре, и я пытаюсь избежать ненужных слоев в коде.