vector 的 C++ vector

标签 c++ vector

我有一个名为 Grid.h 的类头文件,其中包含以下 2 个私有(private)数据对象:

vector<int> column;
vector<vector<int>> row;

还有一个公共(public)方法,它在 Grid.h 中的原型(prototype)是这样的:

int getElement (unsigned int& col, unsigned int& row);

上述函数的定义在Grid.cpp中是这样定义的:

int getElement (unsigned int& col, unsigned int& row)
{
    return row[row][col] ;
}

当我运行该程序时,出现此错误:

error C2109: subscript requires array or pointer type

出了什么问题?

最佳答案

return row[row][col]; 行中,第一个 rowint&,而不是 vector.

在内部作用域中声明的变量覆盖了外部作用域中的变量,因此编译器试图索引 int 而不是 vector,这显然做不到。

您应该修复您的变量名称,以免它们发生冲突。

编辑:此外,虽然您得到的错误表明编译器找到了错误的 row 变量,正如 A. Levy 指出的那样,您也有vector 的声明存在问题,因此即使您修复了变量名称,如果您确实已按照此处所示声明了 vector,它也不会编译。嵌套模板在 > 符号之间需要空格,否则编译器会将 >> 读取为右移运算符,而不是模板声明的一部分。必须是

std::vector<std::vector<int> > row;

std::vector< std::vector<int> > row;

此外,当您在头文件中执行此操作时,您将需要将 std:: 标记添加到 std 命名空间的任何内容的前面 - 例如 vector 。如果它在 cpp 文件中,那么您可以使用 using namespace std; 但在头文件中这样做会非常糟糕(因为它会污染全局命名空间)。如果没有 std:: 标记或 using 语句,编译器将无法识别 vector

关于 vector 的 C++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2717533/

相关文章:

c# - 在 Unity C# 中将对象缓慢移动到新位置

Java - 反向词序, vector

c++ - 使用 using 关键字继承构造函数时的意外行为

c++ - 启用 openmp 时出错 - "ld: library not found for -lgomp"和 Clang 错误

像数组一样遍历结构成员的 C 方法?

c++ - 启用 -std=c++0x 时自定义分配器的编译问题

C++ 错误 : no matching function for call to 'std::vector<int>::swap(std::vector<int>)'

c++ - Boost UDP套接字上的SIGSEGV关闭-malloc.c上的tcache_get

c++ - 如何在wxWidgets框架中添加图片?

c++ - std::fabs() 优化不好?