我试图让一个结构拥有一个指针,该指针指向一个指向堆上对象的指针数组。为了不必担心删除这些对象,我想使用智能指针。但是,我似乎找不到正确的语法来做到这一点...
这是我想要实现的(我认为):
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){}
}
任何帮助,不胜感激!(还有免责声明:我以前没有真正使用过智能指针...)
unique_ptr
数组的A仅会清除该数组,但是如果元素是指向存储在其他位置(大概在堆上)的对象的指针,则不会自动清除这些对象。
看来您宁愿
std::vector< std::unique_ptr<Position>>
或unqiue_ptr
具有自定义删除器的数组,该删除器也会删除元素。另一方面,如果数组拥有该数组,则Position
您需要的机会是
std::vector<Position>
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句