union и класи с конструкторами
У меня возникла вот такая интересная ситуация при компиляции програмы: проблема в том что если о обединение входит клас то при компиляции возникает ошибка.
Вот програма (написана на Visual C++):
#pragma once
#include <complex>
#include "matrix.h"
typedef class std::complex<long double> LongComplex;
typedef enum EOperation {UNKNOWN,DEGREE,MUL,DIVD,AND,OR,XOR,NOT,DIV,MOD,PLUS,MINUS} OPERATION;
typedef enum ESwitcher {EMPTY,NUMBER,MATRICA,ACT} SWITCHER;
typedef class CElement
{
public:
SWITCHER GetElementType() {return sw;};
LongComplex& GetNumber();
OPERATION& GetOperation();
MATRIX& GetMatrix();
void SetNumber(LongComplex num);
void SetOperation(OPERATION n);
void SetMatrix(MATRIX& m);
void Clear();
private:
union
{
LongComplex number;
OPERATION op;
MATRIX matr;
}element;
SWITCHER sw;
} ELEMENT,* PELEMENT;
А вот ошибка error C2620: member 'CElement::number' of union 'CElement::<unnamed-tag>' has user-defined constructor or non-trivial default constructor.
Но самое удивительное, то что MATRIX тоже класс но он ошибки не видайот потому что имеет конструктор и деструктор по умолчанию (то есть вобще их не имеет).
Что можете посоветовать. как решыть ету проблему (обединение нужно использовать обязательно)?:confused: