Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

union и класи с конструкторами

23K
10 марта 2008 года
__nazar__
9 / / 29.08.2007
Здраствуйте.
У меня возникла вот такая интересная ситуация при компиляции програмы: проблема в том что если о обединение входит клас то при компиляции возникает ошибка.

Вот програма (написана на 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:
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог