Как использовать варианты std :: более «вкусно», синтаксис?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как использовать варианты std :: более «вкусно», синтаксис?

Сообщение Anonymous »

Это мотивировано ответом, который я дал новичкому пользователю, где я предложил, чтобы он использовал std :: variant вместо союза.

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

struct Box {
struct Item { float value; };
using Boxes = std::vector;

union Value {
Item item;
Boxes boxes;
};

Value contents;
std::string label;
};
< /code>
(не совсем то, что имел оригинальный вопрос, я получаю здесь какую -то поэтическую лицензию.) И с вариантом класс может выглядеть так: < /p>
struct Box {
struct Item { float value; };
using Boxes = std::vector;

std::variant contents;
std::string label;
};
< /code>
Дело в том, что с первой формулировкой этой структуры я могу написать < /p>
if (box.contents.boxes.size() > 2) { foo(); }
и при условии, что я уже установил, что будут подборы, это будет работать.

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

if (std::get(box.contents).size() > 2) { foo(); }
< /code>
Я чувствую, что вторая версия гораздо менее читаема, немного запутанна и довольно отвлекает. Плюс - я должен знать тип коробок 
.
Что я могу сделать в своем коде, чтобы избавить своих пользователей необходимостью сделать такого рода std :: get () и сделать их жизнь более приятными?

Подробнее здесь: https://stackoverflow.com/questions/623 ... yntax-wise
Ответить

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

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

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

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

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