我有一个模板函数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。
答案 0 :(得分:1)
你应该听听编译器告诉你的内容。错误往往比你想象的更简单:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text>
<menu>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
</menu>
</item>
<item android:title="Some Text>
<menu>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
<item
android:id="@+id/some_id"
android:title="Some Text"/>
</menu>
</item>
</menu>
额外的右括号。编译器错误意味着“我以为你完成了这个命令,你为什么要关闭另一个括号对?”