【发布时间】:2015-08-04 21:10:49
【问题描述】:
我在一个指向结构的类上有一个 unique_ptr 成员。
class ExampleClass {
std::unique_ptr<StateStruct> _character_state;
}
我不明白如何获取结构的内存并设置 unique_ptr。
在我的构造函数中,我有:
ExampleClass::ExampleClass {
std::unique_ptr<StateStruct> _character_state(static_cast<StateStruct*>(malloc(sizeof(StateStruct))));
_character_state->state_member_int_value = 4 // _character_state is empty
}
我做错了什么?
【问题讨论】:
-
malloc()而不是认真地使用new?? -
你的结构可能没有正确初始化,因为你做了这个
malloc废话。您也很可能在这里甚至不需要指针。 -
我特别喜欢 malloc() 与 C++ 风格转换的并置。
-
Err.. 没有人注意到他正在创建一个隐藏成员
_character_state的 local_character_state?这与malloc有关。 -
哈哈......是的,我还在学习......在我的辩护中,这代表了一个极度绝望的时刻。我正在使用一个超过 20 年的代码库。 @sbabbi,你能解释一下创建一个隐藏成员的本地状态是什么意思吗?
标签: c++ c++11 smart-pointers unique-ptr