#include <memory>
int main()
{
std::shared_ptr<double> array (new double [256], [](double * d){
delete [] d;
});
}
Run Code Online (Sandbox Code Playgroud)
我shared_ptr指出了一系列具有自己的自定义删除器的双打.
现在我该如何访问阵列?假设我希望在索引处访问数组1.我尝试了通常的"支架方法",但我得到了错误.
array默认情况下,该词指向其第一个元素,但如果我想访问第二个元素该怎么办?使用增量和括号给我"操作员不匹配"错误.
有人可以向我解释一下发生了什么事吗?
我问这个用于研究目的,尽管意识到unique_ptr并且vector会做得更好.
Lig*_*ica 10
括号表示法被定义为使用指针类型(并且你是正确的,给定数组array,表达式array衰减到具有指向第一个元素的类型的表达式)但是,尽管它的功能,std::shared_ptr它不是指针类型.
您必须首先获取原始指针:
array.get()[n];
Run Code Online (Sandbox Code Playgroud)
n当然,有效的数组下标在哪里.
情况也是如此std::unique_ptr(但请注意,在这种情况下,您不需要提供自己的删除器!).
| 归档时间: |
|
| 查看次数: |
4399 次 |
| 最近记录: |