C++ Qt智能指针相当于boost::shared_数组?

C++ Qt智能指针相当于boost::shared_数组?,c++,qt,smart-pointers,qsharedpointer,C++,Qt,Smart Pointers,Qsharedpointer,虽然存在一个等价物boost::shared_ptr(QSharedPointer),但我找不到类似于boost::shared_数组的东西 当然,我可以用类似的东西 QSharedPointer<const std::vector<T> > shared_vector_ptr(new std::vector<T>( reinterpret_cast<T*>(pBuffer), reinterpret_cast<T

虽然存在一个等价物
boost::shared_ptr
QSharedPointer
),但我找不到类似于
boost::shared_数组的东西

当然,我可以用类似的东西

QSharedPointer<const std::vector<T> > shared_vector_ptr(new std::vector<T>(
       reinterpret_cast<T*>(pBuffer),
       reinterpret_cast<T*>(pBuffer+length)
));    
QSharedPointer共享向量ptr(新std::vector)(
重新解释铸造(pBuffer),
重新解释铸件(pBuffer+长度)
));    
但我想知道是否存在一个原生Qt解决方案,它提供
T&operator[](size\u T)
,并使用
delete[]
而不是
delete
。我不愿意在这个项目中使用boost,因为目标机器无法安装boost,而且项目是按源代码分发的


注意:我知道我可以使用
QSharedPointer::QSharedPointer(T*ptr,deleter-deleter)
指定一个deleter,但是我不喜欢这种方法,因为编译器不会强制您指定一个deleter,这将导致一个
new[]
分配的块被
删除
删除我认为最近的是
QScopedArrayPointer
,但当然它的范围是有限的


QSharedPointer
子类化,以静默方式添加自己的调用
delete[]
的隐藏
Deleter
(并添加一个
操作符[]
),这样用户就不必进行任何思考,而且它仍然使用Qt本机代码——您刚刚把它包装得很整齐。

关于这个主题有两篇精彩的帖子:仅供参考:进一步的向下投票能解释他们自己吗?我对反对票没有异议,但如果不加评论,很难知道你做错了什么。