Переназначение структуры, содержащей ссылку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
Ответить

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

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

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

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

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