Когда вам не нужно иметь дело с указателями, копирование/перемещение структуры в другую довольно просто.
В моем случае я должен иметь дело с указателями и правами доступа.Копирование/перемещение структуры в другую
protected:
addrinfo *hints, *result;
...
hints = new addrinfo;
...
getaddrinfo(0, port.c_str(), hints, &result); // result is protected - can't do that.
memmove/memcpy
может быть использован, но addrinfo
содержит указатель на sockaddr
внутри себя. Я думал использовать временную структуру, чтобы пройти getaddrinfo
, а затем переместить все на result
, но вопрос всегда есть.
Сообщите мне, если вам нужны другие детали.
EDIT: @Mike Woolf, вы дали мне идею. Поскольку базовый класс является абстрактным, я даже могу сделать эти структуры общедоступными, так как у пользователя не было бы способа его исправить. Спасибо, однако, за ответ.
Начнем с очевидного вопроса: если вам нужен открытый доступ к результату, почему бы не сделать его общедоступным или предоставить общедоступный метод доступа? –