我有一个旧的 C 库,我尝试修改它。有这样一行:
memcpy(&m_agents[idx].params, params, sizeof(dtCrowdAgentParams));
当然,C stule pod 之类的值和结构也会被复制。但我尝试添加到 params.some_struct.some_inner_map_field
std::map
并且它没有在 memcpy 上初始化。
所以我想知道如何复制我的 map 以使其保持活力? (如果可能的话,不扩展 params 和 params.some_struct 的方法)
最佳答案
我需要查看结构的完整定义才能确定,但这应该可行:
m_agents[idx].params = *params;
对于 POD 类型,它将执行与 memcpy 相同的操作。对于非 POD 类型,它将调用它们的赋值运算符。
关于c++ - memcpy 和 std 组件,例如 map : runtime failer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15616099/