C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?
Posted
技术标签:
【中文标题】C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?【英文标题】:What does C++ mean by "expression must have pointer-to-object type" and "subscript requires array or pointer type"?C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是什么意思? 【发布时间】:2020-03-22 14:02:36 【问题描述】:我开始编写一个函数,它接受一个大小为 x 大小的二维向量,并返回它顺时针旋转 90 度后的样子的副本。我来了:
std::vector<int> rotate90(std::vector<int> orig, int size)
std::vector<std::vector<int>> r;
r.resize(size);
for (int i = 0; i < size; i++)
r[i].resize(size);
for (int j = 0; j < size; j++)
r[i][j] = orig[size - j - 1][i];
但是,它说最后一行有问题:“表达式必须具有指向对象的类型”和“下标需要数组或指针类型”。我对使用 C++ 很陌生,所以我查找了一些关于使用带有向量的指针的东西,但我仍然不确定如何以一种可以在这里工作的方式实现它们。
【问题讨论】:
这可能不是有史以来最清晰或最有趣的问题。但是,关闭题外话对我来说感觉不对。 OP 对他的功能接收到什么感到困惑。我们可以澄清一下。或者,在非常接近时它重复,或者其他东西,而不是 OT。 【参考方案1】:问题在于orig
不是二维向量。
std::vector<int> orig
是一维向量,所以
orig[size - j - 1][i]
无法编译。
【讨论】:
以上是关于C ++中的“表达式必须具有指向对象类型”和“下标需要数组或指针类型”是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章