powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно объединять переменные со структурой с идентичными переменными?
7 сообщений из 7, страница 1 из 1
Можно объединять переменные со структурой с идентичными переменными?
    #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
Можно объединять переменные со структурой с идентичными переменными?
    #38115910
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да.
union для этого и придуман.
...
Рейтинг: 0 / 0
Можно объединять переменные со структурой с идентичными переменными?
    #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
Можно объединять переменные со структурой с идентичными переменными?
    #38115984
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай учебники:
http://lib.ru/CTOTOR/kernigan.txt#83
http://lib.ru/CPPHB/cpptut.txt#58
Этим учебникам можно верить.
...
Рейтинг: 0 / 0
Можно объединять переменные со структурой с идентичными переменными?
    #38116003
уже прочел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White OwlЧитай учебники:
http://lib.ru/CTOTOR/kernigan.txt#83
http://lib.ru/CPPHB/cpptut.txt#58
Этим учебникам можно верить.
Такие простые случаи то очевидны.
Там нет примера объединения структуры с POD-типами.
Меня интересует может ли по стандарту компилятор C/C++ менять порядок расположения объектов/переменных в унаследованной структуре или может ли что-то добавлять или сдвигать их относительно друг друга, допустим из-за выравнивания?

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

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


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