Форум программистов, компьютерный форум CyberForum.ru

Совмещение union и class - C++

Восстановить пароль Регистрация
 
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
06.07.2012, 19:26     Совмещение union и class #1
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class A
{
        public: 
                A(){}
};
 
class B
{
        public:
                B(){}
};
 
union Uni
{
        A a;
        B b;
};

C++
1
`A Uni::a' with constructor not allowed in union

Как с этим бороться?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.07.2012, 19:26     Совмещение union и class
Посмотрите здесь:

C++ Нужно объект типа класс проинициализировать с помощью перегруженного конструктора Class::Class( bool a )
error C2228: left of '.add' must have class/struct/union type. в чем ошибка? C++
Разъясните код пжлст(выдает ошибку:cannot convert from 'class std::list<class c_bullet *,class std::allocator<class c_bullet *> >::iterator' to 'int') C++
Работа с class ами. Заполнение дин. массива типа class C++
std::bind1st: is not a class, struct, or union type C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
06.07.2012, 19:32     Совмещение union и class #2
Use the C++11, Luke

Добавлено через 39 секунд
Или так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
class A
{
        public: 
                // A(){}
};
 
class B
{
        public:
                // B(){}
};
 
union Uni
{
        A a;
        B b;
};
 
int main()
{
    /* code */
    return 0;
}
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
06.07.2012, 19:35     Совмещение union и class #3
Цитата Сообщение от Ksan Посмотреть сообщение
Как с этим бороться?
до С++11 никак, и этот запрет как раз и был связан с вызовом конструкторов/деструкторов
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
06.07.2012, 19:40  [ТС]     Совмещение union и class #4
soon, Работает, но так не вариант, потому что в классах нужен конструктор.

Добавлено через 24 секунды
Jupiter, а сейчас?
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.07.2012, 19:40     Совмещение union и class #5
Ksan, use boost::variant.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
06.07.2012, 19:58  [ТС]     Совмещение union и class #6
ForEveR, а без буста?

Не по теме:

ты сейчас очень рекламщика напоминаешь. только рекламируешь буст

ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.07.2012, 20:00     Совмещение union и class #7
Ksan, Я говорю, что нефиг писать свои велосипеды, когда это уже написано во много раз лучше, конкретно для union-a способного содержать любые типы boost::variant, loki::variant. А до С++11 это возможно только теми же "хаками" с выравниванием, как в бусте или локи.
Ksan
26 / 26 / 0
Регистрация: 02.11.2010
Сообщений: 370
06.07.2012, 20:11  [ТС]     Совмещение union и class #8

Не по теме:

ForEveR, если использовать все время чужие велосипеды, то так и делать их разучишься



Но за наводку спасибо
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.07.2012, 20:11     Совмещение union и class #9
А если учитывать С++0x то читайте последний драфт стандарта пункт 9.5.
А велосипеды и не надо писать, использовать стандартную библиотеку и нужные библиотеки намного логичнее, ведь в реальной практике, редко когда от вас будет требоваться написать велосипед.
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
06.07.2012, 23:03     Совмещение union и class #10
ForEveR, если использовать все время чужие велосипеды, то так и делать их разучишься
Главное правильно научиться кататься чтоб нос не набивать.А вообще для учебных целей в этом есть смысл.
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.07.2012, 23:13     Совмещение union и class #11
Avazart, Реализовывать собственный велосипед, который реализует хранение не POD типов в объединение, используя хаки с выравниванием является несколько идиотской задумкой, ибо реализовать это корректно оооочень не просто (для примера смотрите шаблонную магию в локи или шаблонную магию в бусте, которая используется для variant).
Avazart
 Аватар для Avazart
6900 / 5140 / 252
Регистрация: 10.12.2010
Сообщений: 22,584
Записей в блоге: 17
06.07.2012, 23:17     Совмещение union и class #12
Ну если сложно - значит есть над чем подумать, а это уже хорошо.Вопрос стоит ли думать именно над этим или потратить вреня на что-то более полезное другой вопрос.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.07.2012, 23:23     Совмещение union и class
Еще ссылки по теме:

C++ Create a programm that creates an object of created class Time and tests the member functions of class
При компиляции ошибка: C2228: left of ".real",".imag" must have struct/class/union C++
Ошибка компиляции "must have class/struct/union" C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
ForEveR
Модератор
Эксперт C++
 Аватар для ForEveR
7927 / 4709 / 318
Регистрация: 24.06.2010
Сообщений: 10,524
Завершенные тесты: 3
06.07.2012, 23:23     Совмещение union и class #13
Avazart, Проблема в том, что в большинстве случаев фишка с выравниванием - вещь непереносимая, как это сделано в бусте и локи я откровенно говоря не помню, но судя по коду далеко не просто, эта вещь является темным углом языка программирования, а без нужды туда лучше не лезть.
Yandex
Объявления
06.07.2012, 23:23     Совмещение union и class
Ответ Создать тему
Опции темы

Текущее время: 04:44. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru