Когда вам не нужно иметь дело с указателями, скопировать/переместить структуру в другую довольно просто.
Однако в моем случае мне приходится иметь дело с указателями и правами доступа.
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
, но вопрос всегда остается.
Скажите, если вам нужны какие-то другие подробности.
РЕДАКТИРОВАТЬ: @Mike Woolf, ты дал мне идею. Поскольку базовый класс является абстрактным, я могу даже сделать эти структуры общедоступными, поскольку у пользователя не будет возможности их идентифицировать. Однако спасибо за ответ.