Непонятно возвращение std::unique_ptrC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Непонятно возвращение std::unique_ptr

Сообщение Anonymous »

Предположим, у меня есть древовидная структура с узлом, определенным следующим образом:
struct Node
{
byte key_part;
unique_ptr left, right, middle;
TValue value;
};
unique_ptr root;

Семантика здесь правильная, я абсолютно не хочу, чтобы другие завладели самим моим узлом. Оно уникально хранится в моем дереве.
Однако я хочу добавить внутреннюю вспомогательную функцию для поиска в дереве на основе внутренней семантики и возврата ... что-нибудь? к структуре узла. Это частная функция, используемая только внутри, чтобы вставить узел и заполнить его данными извне, удалить узел или вернуть поле value (а не сам узел) снаружи. Узел ни в коем случае не вытекает наружу.
Так как мне написать функцию? Я не могу вернуть из него unique_ptr, верно? Или сработает семантика перемещения. Я мог бы вернуть указатель, но это, похоже, нарушает систему, плюс приводит к проблемам с псевдонимами. Ссылка аналогична, но она не позволяет мне использовать nullptr, чтобы отметить отсутствие найденного результата. По сути, каким будет тип возвращаемого значения:
/* return type here */ search(const span& key)
{
auto node = /* recursive search here, etc */;
return /* what do I put here, given I have a unique_ptr reference? */;
}


Подробнее здесь: https://stackoverflow.com/questions/792 ... unique-ptr
Ответить

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

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

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

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

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