指针数组语法的Unique_ptr

广告

我试图让一个结构拥有一个指针,该指针指向一个指向堆上对象的指针数组。为了不必担心删除这些对象,我想使用智能指针。但是,我似乎找不到正确的语法来做到这一点...

这是我想要实现的(我认为):

    const std::unique_ptr<(*Position)[]> entity_position;

然后接收一个unique_ptr<*Position[]>作为struct构造函数的参数。但是我expected expression在关闭']'时遇到错误。我已经看过带有数组指针的std :: unique_ptr(以确认delete[]确实会被调用),并从std :: unique_ptr数组中获取原始指针数组,但是我还没有完全理解这最后一个试图实现的目的。

这是我正在编写的代码的简化版本:

#include <memory>
#include "Position.hpp"
struct myStruct final : public baseStruct{
    const std::unique_ptr<(*Position)[]> pos_pointer_array;

    myStruct(std::unique_ptr<(*Position)[]> ptr_to_get): pos_pointer_array(ptr_to_get){}

}

任何帮助,不胜感激!(还有免责声明:我以前没有真正使用过智能指针...)

maximum_prime_is_463035818

unique_ptr数组的A仅会清除该数组,但是如果元素是指向存储在其他位置(大概在堆上)的对象的指针,则不会自动清除这些对象。

看来您宁愿

 std::vector< std::unique_ptr<Position>> 

unqiue_ptr具有自定义删除器的数组,该删除器也会删除元素。另一方面,如果数组拥有该数组,则Position您需要的机会是

 std::vector<Position>

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章