【发布时间】:2015-06-11 12:03:03
【问题描述】:
#include <memory>
int main()
{
std::shared_ptr<double> array (new double [256], [](double * d){
delete [] d;
});
}
我创建了一个 shared_ptr 指向一个具有自己自定义删除器的双精度数组。
现在如何访问数组?假设我希望访问索引1 处的数组。我尝试了通常的“括号法”,但出现错误。
array 这个词默认指向它的第一个元素,但是如果我想访问第二个元素呢?使用增量和括号会给我“与运算符不匹配”错误。
有人可以向我解释一下幕后发生了什么吗?
我问这个是为了研究目的,尽管我知道unique_ptr 和vector 会做得更好。
【问题讨论】:
-
不好意思问,c++17中不应该是
std::shared_ptr<double[]> array (new double [256], [](double * d){ delete [] d; });或std::shared_ptr<double> array (new double [256]);,甚至是std::shared_ptr<double> array = std::make_shared<double[]>(256);吗?
标签: c++