Переназначение структуры, содержащей ссылку ⇐ C++

Программы на C++. Форум разработчиков
Anonymous
Переназначение структуры, содержащей ссылку

Сообщение Anonymous »

Я пытаюсь создать класс, который будет обработчиком обмена сообщениями с определенным состоянием.
Когда сообщение подготовлено, я ожидаю создать новую структуру state_t, ссылающуюся на новый "y" данные. Затем я хочу иметь возможность доступа к новому объекту через ту же переменную состояния.
Минимальный пример с указателями будет примерно таким:

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

class Handler {
int x;  // something config for the handler
struct state_t {
int *y;
state_t(int *y) : y(y) {}
};

std::optional state;

Handler(int x) : x(x), state(std::nullopt) {}

void prepare_message(int *y) {
state = state_t(y);
}

void handle_state() {
// do something with the y e.g. send it over a socket
}

};
Мне интересно, есть ли хороший способ заставить это работать со ссылкой вместо указателя на y. Его прямая замена не будет компилироваться, поскольку назначение копирования неявно удаляется. Можно ли это преодолеть элегантным способом?

Подробнее здесь: https://stackoverflow.com/questions/791 ... -reference

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