函数调用中的意外编译错误(C++)[关闭]

Posted

技术标签:

【中文标题】函数调用中的意外编译错误(C++)[关闭]【英文标题】:unexpected compilation error in a function call (C++) [closed] 【发布时间】:2018-06-13 10:32:06 【问题描述】:

我有一个模板函数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 是我创建的一个类,通过 header 包含在程序中 #include "fstreamExtension.h",其他包含的标题是iostream stringboost/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。

【问题讨论】:

数一下你的括号() 输入问题比找到错误需要更长的时间。 在不相关的注释上,请阅读Why is iostream::eof inside a loop condition considered wrong? @Someprogrammerdude 从现在开始,我将避免在循环条件中使用 iostrem::eof,谢谢 【参考方案1】:

您应该听听编译器告诉您的内容。通常错误比你想象的要简单:

temp = tokenizeToInt(s, ",\n")); //error: expected ';' before ')' token|

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

【讨论】:

以上是关于函数调用中的意外编译错误(C++)[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C++意外调用继承类的函数

初学者在 C++ 中调用函数,代码编译数学是错误的

使用 struct 参数从程序集中调用 C++ 函数

函数调用时的 C 到 C++ 错误

C++ [错误] 没有匹配的调用函数

在Android环境下编译调用c++出现以下错误,大神们这是啥原因呀??我已经配置NDK了。