当我尝试编译类似于以下内容的东西时,我收到标题中提到的错误消息.
class Object{
public:
Object(){
//Something
}
void x(){
//Something
}
}
void function(std::vector<Object>* things){
int someNumber;
//Some algorithm to get the value of someNumber.
things->resize(someNumber);
for(int i=0;i<someNumber;i++){
things[i].x();
}
}
int main(){
vector<Object> things;
function(&things);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
什么可能导致麻烦?
您正在向您的向量传递指针,因此当您使用[]它时,things就像处理向量数组一样.
void function(std::vector<Object>* things)
{
things[0]; // element of array of vectors (vector<Object>)
}
Run Code Online (Sandbox Code Playgroud)
尝试通过引用传递矢量:
void function(std::vector<Object>& things)
{
things[0]; // element of passed in vector (Object)
}
Run Code Online (Sandbox Code Playgroud)
在C++当你使用[]一个指针它假设您正在访问的阵列,其开始由指针指示.
所以在你的情况下,假设你有一个向量数组,并[]从该数组中选择一个向量.
您希望用来[]访问向量的元素,因此您需要按指示传入向量,或者在使用之前取消引用指针[]:
vector<Object>* things;
(*things)[0]; // dereference the pointer then access the elements
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1092 次 |
| 最近记录: |