【发布时间】:2020-02-03 09:28:34
【问题描述】:
我一直试图弄清楚智能指针数组如何与测试程序一起工作,该测试程序旨在一次读取一个文件,并将每个字符存储在所述数组中的指针处。但是,为了设置数组的后续变量,我一直无法增加指针。虽然没有智能指针,但我可以简单地输入,例如,
char *check = new char[length];
for (int i =0; i < length; i++);{
*check=='a';
check++;
}
这将允许我为指针数组中的每个指针分配一个值,对智能指针数组执行相同操作会导致“check++”行出现以下错误,
//This is the smart pointer I've been using, for reference;
std::shared_ptr<char> right(new char(length));
error: no 'operator++(int)' declared for postfix '++' [-fpermissive]
暂时,让我们忘记括号表示法不存在(它有效,但我想知道用指针表示法做到这一点的方法),所以我可以以可靠的方式增加或访问未来的指针,这样我可以在诸如循环之类的事情中使用它来在智能指针数组的每个指针中输入值。
【问题讨论】:
-
我认为您误解了
std::shared_ptr的设计目的。如果您想遍历分配的缓冲区,例如char值,则应该使用std::vector<char>(length)。 -
char *check = new char[length];没有指针数组。只有一个(动态分配的)字符数组。你最好在循环内写check[i]='a';。
标签: c++ arrays c++11 pointers smart-pointers