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

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

Сообщение Anonymous »

Я пытаюсь создать класс, который будет обработчиком сообщений с определенным состоянием. Минимальный пример с указателями будет примерно таким:

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

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++»