В строке return row[row][col];
первым row
является int&
, а не vector
.
Переменная, объявленная во внутренней области видимости, скрывает переменную во внешней области видимости, поэтому компилятор пытается индексировать int
, а не vector
, чего он явно не может сделать.
Вам следует исправить имена переменных, чтобы они не конфликтовали.
РЕДАКТИРОВАТЬ: Кроме того, хотя полученная ошибка указывает на то, что компилятор находит неправильную row
переменную, как указывает А. Леви, у вас также есть проблема с объявлением ваш vector
, поэтому, даже если вы исправите имена переменных, если вы действительно объявили vector
, как показано здесь, он не скомпилируется. Вложенные шаблоны должны иметь пробелы между символами >
, в противном случае компилятор будет читать >>
как оператор сдвига вправо, а не как часть объявления шаблона. Это должно быть
std::vector<std::vector<int> > row;
или
std::vector< std::vector<int> > row;
Кроме того, поскольку вы делаете это в заголовочном файле, вам нужно будет прикрепить тег std::
к передней части чего-либо из пространства имен std, например vector
. Если бы он был в файле cpp, то вы могли бы использовать using namespace std;
, но это было бы очень плохо делать в заголовочном файле (так как это загрязнило бы глобальное пространство имен). Без тега std::
или оператора using
компилятор не распознает vector
.