Тема: Qt і union
Чи можна робити так, адже QString використовує динамічну пам'ять:
#include <QString>
struct Adress
{
bool country_or_city;
union {
QString country;
QString city;
};
};
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Qt і union
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Чи можна робити так, адже QString використовує динамічну пам'ять:
#include <QString>
struct Adress
{
bool country_or_city;
union {
QString country;
QString city;
};
};
А в чому проблема?
у тому що елементи з конструктором не можуть бути використані у об'эднаннях
Код нижче повинен відповісти на усе
http://codepad.org/DwGaC3uF
Чи можна робити так, адже QString використовує динамічну пам'ять:
- ні напряму не можна
member with constructor not allowed in 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 ]
http://melpon.org/wandbox/permlink/cYaWnw38GH9O60GI
Якщо треба, можу показати більш розгорнутий приклад управлінням копіювання/переміщення union в класі з урахуванням C++11.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися