Разыменование копирования значения unique_ptr - PullRequest
0 голосов
/ 17 июня 2019

У меня есть функция, которой присваивается unique_ptr в строку.Я хочу скопировать это значение lambdas и использовать его для вызова функций, которые принимают std :: string.Вот что я делаю ниже, правильный способ сделать это:

void someFunc(std::unique_ptr<std::string> id) {
    const std::string idStr = *id;
    stream.subscribe([=](auto arg1) { arg1.invoke(idStr); });
}

Что я хочу сделать, это просто скопировать строку в новое место.На данном этапе не волнует идентификатор unique_ptr.Я нашел это обсуждение , которое говорит, что, кажется, указывает, что я могу сделать следующее:

std::string idStr = std::move(id);

Однако, на самом деле, это не работает для меня.Сбой с ошибкой «нет жизнеспособного преобразования».

1 Ответ

1 голос
/ 17 июня 2019

У меня есть функция, которой присваивается строка unique_ptr. Я хочу скопировать это значение

void someFunc(std::unique_ptr<std::string> id) {
    const std::string idStr = *id;

Что я хочу сделать, это просто скопировать строку в новое место.

Это правильный способ скопировать указанную строку, да.

... что я могу сделать следующее:

std::string idStr = std::move(id);

Это плохо сформировано. Тебе этого не сделать. Примеры в связанном вопросе этого не делают.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...