Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно объединять переменные со структурой с идентичными переменными? / 7 сообщений из 7, страница 1 из 1
18.01.2013, 18:47
    #38115868
Можно объединять переменные со структурой с идентичными переменными?
Можно ли использовать подобное объединение и что говорит об этом стандарт?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
#include <iostream>
using namespace std;

struct T {
  int a;
  float b;
  // many other types...
};

union T_union {
 T t1;
 struct T_owner {
  T t;
 } t2;
};

int main() {
    T_union un;
    un.t1.a = 10;
    cout << un.t2.t.a << endl; // I can always do that?

    return 0;
}
...
Рейтинг: 0 / 0
18.01.2013, 19:13
    #38115910
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно объединять переменные со структурой с идентичными переменными?
Да.
union для этого и придуман.
...
Рейтинг: 0 / 0
18.01.2013, 19:31
    #38115930
Можно объединять переменные со структурой с идентичными переменными?
White OwlДа.
union для этого и придуман.
А это справедливо для всех платформ?

И допустим если код будет такой, то обращение через юнион к a и b будут корректны?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
#include <iostream>
using namespace std;

struct T {
  int a;
  float b;
  // many other types...
};

struct T_owner_base {
  T t;
 };

struct T_owner_child : T_owner_base {
  double c;
 };

union T_union {
 T t1;
 T_owner_child t2;
};

int main() {
    T_union un;
    un.t1.a = 10;
    cout << un.t2.t.a << endl; // I can always do that?

    return 0;
}
...
Рейтинг: 0 / 0
18.01.2013, 20:33
    #38115984
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно объединять переменные со структурой с идентичными переменными?
Читай учебники:
http://lib.ru/CTOTOR/kernigan.txt#83
http://lib.ru/CPPHB/cpptut.txt#58
Этим учебникам можно верить.
...
Рейтинг: 0 / 0
18.01.2013, 21:00
    #38116003
уже прочел
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно объединять переменные со структурой с идентичными переменными?
White OwlЧитай учебники:
http://lib.ru/CTOTOR/kernigan.txt#83
http://lib.ru/CPPHB/cpptut.txt#58
Этим учебникам можно верить.
Такие простые случаи то очевидны.
Там нет примера объединения структуры с POD-типами.
Меня интересует может ли по стандарту компилятор C/C++ менять порядок расположения объектов/переменных в унаследованной структуре или может ли что-то добавлять или сдвигать их относительно друг друга, допустим из-за выравнивания?

Виртуальное наследование с виртуальными функциями не рассматриваем, т.к. там понятно, что компилятор добавляет указатели.
...
Рейтинг: 0 / 0
21.01.2013, 17:20
    #38118443
chabapok
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно объединять переменные со структурой с идентичными переменными?
mingw под виндой, тот что шел с qt, если собирать проект как релиз - глючил при работе с юнионами, при этом в дебаге все работало
...
Рейтинг: 0 / 0
21.01.2013, 18:31
    #38118566
Anatoly Moskovsky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Можно объединять переменные со структурой с идентичными переменными?
chabapok,

Да-да, мы в курсе. Ошибка не в программе, а в компиляторе
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно объединять переменные со структурой с идентичными переменными? / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]