函数调用中出现意外编译错误 (C++)

unexpected compilation error in a function call (C++)

本文关键字:错误 C++ 编译 意外 函数调用      更新时间:2023-10-16

我有一个模板函数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",其他包含的标头是iostreamstringboost/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|

一个额外的右括号。编译器错误意味着"我以为你已经完成了这个命令,你为什么要关闭另一个括号对?