Unique_ptr 到指针数组语法
Unique_ptr to array of pointers syntax
我试图让一个结构拥有一个指向堆上对象指针数组的指针。为了不必担心删除这些对象,我想使用智能指针。但是,我似乎找不到正确的语法...
这就是(我认为)我想要达到的:
const std::unique_ptr<(*Position)[]> entity_position;
然后接收一个unique_ptr<*Position[]>
作为结构构造函数的参数。但是我在结束 ']' 时收到 expected expression
错误。
我看过 std::unique_ptr with array pointer (to confirm delete[]
would indeed be called) and 但我还没有完全理解最后一个试图达到的目的。
这是我正在编写的代码的简化版本:
#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){}
}
非常感谢任何帮助! (免责声明:我以前没有真正使用过智能指针...)
A unique_ptr
到数组只会清理数组,但如果元素是指向存储在别处(大概在堆上)的对象的指针,那么这些对象不会自动清理。
看来你更想要一个
std::vector< std::unique_ptr<Position>>
或 unqiue_ptr
到具有自定义删除器的数组,该删除器也删除元素。另一方面,如果数组拥有 Position
s 的可能性很高,那么您只需要一个
std::vector<Position>
正如 IlCapitano 所说:
Position *[]
should work.
指向 Position
的指针是 Position*
。
Position*
的数组(大小未知)是 Position*[]
。
但是你应该检查一下你是否真的需要这个。也许你想要 std::unique_ptr<Position[]>
?这是指向对象数组(而不是指针数组)的智能指针的常见情况。
我试图让一个结构拥有一个指向堆上对象指针数组的指针。为了不必担心删除这些对象,我想使用智能指针。但是,我似乎找不到正确的语法...
这就是(我认为)我想要达到的:
const std::unique_ptr<(*Position)[]> entity_position;
然后接收一个unique_ptr<*Position[]>
作为结构构造函数的参数。但是我在结束 ']' 时收到 expected expression
错误。
我看过 std::unique_ptr with array pointer (to confirm delete[]
would indeed be called) and
这是我正在编写的代码的简化版本:
#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){}
}
非常感谢任何帮助! (免责声明:我以前没有真正使用过智能指针...)
A unique_ptr
到数组只会清理数组,但如果元素是指向存储在别处(大概在堆上)的对象的指针,那么这些对象不会自动清理。
看来你更想要一个
std::vector< std::unique_ptr<Position>>
或 unqiue_ptr
到具有自定义删除器的数组,该删除器也删除元素。另一方面,如果数组拥有 Position
s 的可能性很高,那么您只需要一个
std::vector<Position>
正如 IlCapitano 所说:
Position *[]
should work.
指向 Position
的指针是 Position*
。
Position*
的数组(大小未知)是 Position*[]
。
但是你应该检查一下你是否真的需要这个。也许你想要 std::unique_ptr<Position[]>
?这是指向对象数组(而不是指针数组)的智能指针的常见情况。