Возможна ли инициализация Struct/Union с указателями к членам?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Возможна ли инициализация Struct/Union с указателями к членам?

Сообщение Anonymous »

просматривал CppReerference и не мог найти ничего похожего на то, что я хотел бы использовать. По этой причине я не могу использовать синтаксис u {value1, value2} (кажется, называется синтаксисом «Список объявлений») для структур, хотя это не будет работать для профсоюзов. У меня есть доступ к указателю к члену, и я хотел бы знать, есть ли способ использовать его для инициализации структуры в этом контексте. Для моих целей, союз не совокупно.

Код: Выделить всё

union U {
int    a;
double b;
};

static constexpr inline auto a_ptr = &U::a;
static constexpr inline auto b_ptr = &U::b;

static constexpr inline U u1 = U{}; // fine
static constexpr inline U u2 = U{.b = 1.0 }; // fine in this example, but only works if U is aggregate, need something else
static constexpr inline U u3 = U{.*b_ptr = 1.0 }; // syntax error
< /code>
Это не может компилироваться с синтаксической ошибкой. Та же проблема возникает, когда я пытаюсь то же самое со структурой.union U {
constexpr inline ~U() {
// assume memory leak handled external
}

int         a;
double      b;
std::string c;
};

static constexpr inline U u = U{.c = "lorem ipsum" };
, когда у вас есть C_PTR равен & u :: c .

Подробнее здесь: https://stackoverflow.com/questions/794 ... s-possible
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»