1

Тема: Qt і union

Чи можна робити так, адже QString використовує динамічну пам'ять:

#include <QString>

struct Adress
{
     bool country_or_city;
     union {
      QString country;
      QString city;
     };
};
Максимальний розмір підпису: 400 символів завдовжки та 4 рядків заввишки

2

Re: Qt і union

А в чому проблема? Що вас насторожує?

Maybe a = Just a | Nothing

3 Востаннє редагувалося -=ЮрА=- (01.11.2016 19:39:23)

Re: Qt і union

А в чому проблема?

  у тому що елементи з конструктором не можуть бути використані у об'эднаннях
Код нижче повинен відповісти на усе
http://codepad.org/DwGaC3uF

Чи можна робити так, адже QString використовує динамічну пам'ять:

- ні напряму не можна

member  with constructor not allowed in union

. Можна працювати з вказівниками, проте для цього випадку це теж не підійде.

Подякували: 0x9111A, Kizyak2

4

Re: Qt і union

-=ЮрА=- написав:

у тому що елементи з конструктором не можуть бути використані у об'эднаннях

Починаючи з C++11 можуть але треба буде писати свої методи управління копіюванням/переміщенням; вирізка зі стандарту (9.5 Unions):

[ Example: Consider the following union:
union U {
int i;
float f;
std::string s;
};
Since std::string declares non-trivial versions of all of the special member functions, U will have
an implicitly deleted default constructor, copy/move constructor, copy/move assignment operator, and destructor. To use U, some or all of these member functions must be user-provided. — end example ]

Подякували: 0x9111A, Kizyak2

5 Востаннє редагувалося Reinterpret (08.11.2016 16:07:42)

Re: Qt і union

http://melpon.org/wandbox/permlink/cYaWnw38GH9O60GI
Якщо треба, можу показати більш розгорнутий приклад управлінням копіювання/переміщення union в класі з урахуванням C++11.

Подякували: ReAl, 0x9111A, Kizyak3