У меня есть функция шаблона makeMatrix()
, код:
template<size_t N>
void makeMatrix(string dataFilePath, int adjcMatrix[N][N])
{
fstreamExtension fe("adj.txt", ios::in|ios::binary);
string s;
vector<int> temp;
int i = 0;
while(!fe.eof())
{
getline(fe, s);
temp = tokenizeToInt(s, ",\n")); //error: expected ';' before ')' token|
for(int j = 0; j < N; j++)
adjcMatrix[i][j] = temp[j];
i += 1;
}
}
fstreamExtension — это класс, который я создал и включен в программу через заголовок
#include "fstreamExtension.h"
Другие включенные заголовки iostream
string
а также boost/tokenizer.hpp
,
код для tokenizeToInt()
:
vector<int> tokenizeToInt(string& intString, const char* seperators)
{
vector<int> intValues;
boost::char_separator<char> delims(seperators);
boost::tokenizer<boost::char_separator<char>> tokens(intString, delims);
for (const auto& t : tokens) {
intValues.push_back(atoi(t.c_str()));
}
return intValues;
}
Почему это вызывает ошибку компиляции в makeMatrix()
, синтаксис кажется правильным, я не звонил в main()
, компилировал какой-то другой код, и эта ошибка появилась, когда я начал сборку.
IDE: кодовые блоки 16.01, gcc.
Вы должны слушать то, что говорит вам компилятор. Часто ошибка проще, чем вы думаете:
temp = tokenizeToInt(s, ",\n")); //error: expected ';' before ')' token|
Дополнительная правая скобка. Ошибка компилятора означает «Я думал, что вы закончили с этой командой, почему вы пытаетесь закрыть другую пару скобок?»
Других решений пока нет …