Qt智能指针相当于boost :: shared_array?

时间:2012-07-04 08:52:12

标签: c++ qt smart-pointers qsharedpointer

虽然存在等效的boost::shared_ptrQSharedPointer),但我无法找到类似于boost::shared_array的内容。

当然我可以使用与

类似的东西
QSharedPointer<const std::vector<T> > shared_vector_ptr(new std::vector<T>(
       reinterpret_cast<T*>(pBuffer),
       reinterpret_cast<T*>(pBuffer+length)
));    

但我想知道是否存在提供T& operator[](size_t)并使用delete[]代替delete原生 Qt解决方案。我不愿意在这个项目中使用boost,因为目标机器无法安装boost并且项目按源分发。

注意:我知道我可以使用QSharedPointer::QSharedPointer ( T * ptr, Deleter deleter )指定删除器,但是我不喜欢方法,因为编译器不会强制您指定删除器,这会导致删除new []已分配的块delete

1 个答案:

答案 0 :(得分:1)

我认为最接近的是QScopedArrayPointer,但当然它是作用范围。

QSharedPointer子类化为静默添加您自己隐藏的Deleter调用delete[](并添加operator[]),这样用户就不会那样做了。我必须做任何思考,它仍然使用Qt本机代码 - 你刚刚把它整齐地包裹起来。