14 条回复  ·  1592 次点击
cnbatch 初学 2025-4-10 14:22:44
@yolee599 C++11 起就可以这样初始化赋值了 https://en.cppreference.com/w/cpp/language/data_members#Member_initialization
jujusama 小成 2025-4-10 14:24:04
```cpp std::unique_ptr model = std::make_unique(); func(std::move(*model)); return model; ``` 这 model 不是被 move 了吗?这是在干嘛
yuzii 小成 2025-4-10 14:35:16
导出动态库、std::string 、内存分配问题 这 3 个结合大概率是 c++ abi 混用引起的吧
codyfeng 小成 2025-4-10 14:38:36
@jujusama 说的对,model 里面的 std::string 已经 move 了。去掉 std::move()试试。
GeruzoniAnsasu 小成 2025-4-10 14:43:23
fromJsonString 的入参是右值引用,会调用对象的移动构造 你的 product_config 没有 explict 的移动构造,那么会根据内部成员的移动构造生成隐式移动构造 调用完移动构造后 std::string 会变为无效状态 在你这个地方报错显示 std::string 成员的指针已经变成了 null ,说明之前被移动过了,合理推测是你使用了类似 product_config c; a = fromJsonString(c); b = fromJsonString(c); 的代码
12
返回顶部