复制/移动结构到另一个结构
Copying/moving a struct into another one
当您不必处理指针时,将/将结构复制/移动到另一个很容易。
不过,就我而言,我已经处理指针和访问权限。
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您给了我一个主意。由于基类是抽象的,因此我什至可以将这些结构公开,因为用户无法将其放置。但是,感谢您的答案。
在这种情况下,我会写下自己的复制功能。可能是
void structCopy(struct* dest, const struct* src);
在此功能中,使用memcpy()复制除指针以外的所有内容。
当我制作多人游戏时,我必须做这样的事情 - 复制这样的指针。在这种模式下,通常假设这是一个函数,可以准确地理解它必须做的事情 - 也就是说,structcopy()是专门为该特定结构设计的。因此,它知道对象内有一个sockaddr。
真的,只需在此功能的内部进行硬码如何处理。您是否希望它在另一端创建一个新的sockaddr?然后让复制功能执行此操作。或任何有效的工作。
tl; dr-为您的结构创建一个特殊的复制功能,该功能知道结构内部的内容,并根据您的规格来处理sockaddr。通过使其成为类的一部分(或朋友函数),您不会通过硬编码来违反任何规则。
相关文章:
- 为什么在没有显式默认构造函数的情况下,将另一个结构封装在联合中作为成员的结构不能编译
- 为什么将一个结构的引用设置为等于另一个结构只会更改一个数据成员?
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 如何将一个结构的字符数组复制到结构的另一个字符数组中?
- 如何将数据从一个结构链接到另一个结构
- 是否可以使用智能指针成员设置具有另一个结构的结构?
- std::transform 将一个结构数组复制到另一个结构数组
- C++将结构复制到另一个程序的资源
- 结构新手,我对如何从 void 函数中返回值并将其放入另一个函数感到困惑
- 可以访问一个类中的播放器结构,但不能访问另一个类中的播放器结构
- 如何在另一个结构中初始化结构数组?
- 在另一个结构中声明内部结构会导致错误:结构使用无效
- 通过 C++ 中的另一个结构成员访问结构
- 难以从另一个结构中的函数返回结构
- 有没有办法将一个对象注入到另一个对象的结构中?
- 如何制作一个结构程序,在其中可以存储无限量的数据,以便每次您想要时都可以将另一个产品添加到列表中?
- 将一个结构的值复制到另一个结构
- 结构C++可以用 0 初始化,但不能用另一个 int 初始化
- 如何将矢量结构从一个标头文件传递到另一个标头文件中的类
- 是否可以定义一个在外部"C"块中继承另一个结构的结构?