虽然存在等效的boost::shared_ptr
(QSharedPointer
),但我无法找到类似于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
。
答案 0 :(得分:1)
我认为最接近的是QScopedArrayPointer
,但当然它是作用范围。
将QSharedPointer
子类化为静默添加您自己隐藏的Deleter
调用delete[]
(并添加operator[]
),这样用户就不会那样做了。我必须做任何思考,它仍然使用Qt本机代码 - 你刚刚把它整齐地包裹起来。