#c
#c
Вопрос:
У меня есть функция (assign) в классе (graph) в заголовочном файле. Целью этой функции является печать 2d вектора:
class Graph
{
public:
void printvec(vector< vector<double> >amp;PRRMap);
};
Я вызываю эту функцию из cpp-файла, такого как:
Graph G;
G.printvec(vector< vector<double> > amp;PRRmap);
Я получаю следующую ошибку:
ошибка: ожидаемое первичное выражение перед
‘amp;’
токеном
Как я могу это исправить?
Ответ №1:
void printvec(vector< vector<double> >amp;PRRMap);
Это объявление. Она включает в себя формальные параметры, каждый из которых определяет тип и необязательное имя.
G.printvec(a_map);
Это вызов функции. Она включает в себя фактические параметры, каждый из которых является выражением, иначе называемым значением. Тип не называется во время вызова функции. Но вам действительно нужно указать имя вектора, который вы хотите напечатать.
Тип выражения фактического параметра проверяется на соответствие формальному типу параметра, указанному в объявлении функции. Если они не совпадают, компилятор будет искать подходящее преобразование, и если он не сможет его найти, вы получите ошибку компиляции.
Поскольку вашей функции требуется неконстантная ссылка, большинство преобразований здесь не будут разрешены. Вы должны указать имя подходящего объекта «вектор из векторов», который вы подготовили вместе с данными для печати.
Ответ №2:
при вызове функции вам не нужен оператор amp;
только переменная (допустимая ссылка)