捆绑的无效错误:C2059,C2143,C2181,C2660

时间:2012-07-25 19:57:53

标签: c++ visual-studio-2008

这一组错误是由一个函数引起的,并且这些错误都不是有效的

error C2059: syntax error : '='
error C2143: syntax error : missing ';' before '{'
error C2181: illegal else without matching if
error C2660: 'Lexicon::convertOntology' : function does not take 0 arguments
string Lexicon::convertOntology(string input, int d, string out, string temp) // C2059; C2143
{
    if (in.length() == 0 && temp.length() == 0) {return out; //check for completed conversion //C2181
    } else {
        int r = 1;
        if (d == 1) r = 0; 
        if (in[0] == '.' || in[0] == '-' || in == "") { //found deliminator or end //C2059; C2143
            return convertOntology(in.substr(1), d, out+=vectorSearch(list, temp, 0, d, r), ""); //convert and check // C2143; C2660
        } else return convertOntology(in.substr(1), d, out, temp); //increment and check
    }
}

我没有把所有错误放在一起,它们被重复了14次 - 似乎很清楚这些不是错误,但是解析文本的编译器存在问题;这个上游有一些东西是无与伦比的。我检查了上一个函数,并在调用此函数之前检查了行,但没有找到任何内容。

如何解决这些错误?

1 个答案:

答案 0 :(得分:2)

首先,虽然您传递了一个名为in的变量,但您在整个函数中引用了input

其次,您还应该以另一个顺序检查此in[0] == '.' || in[0] == '-' || in == "",在那里您首先检查 字符串。如果字符串 为空,则当您尝试访问第一个元素[0]时,程序将在此处崩溃。先放in == ""

第三,list未在我能看到的任何地方定义,并在此处使用,vectorSearch(list, temp, 0, d, r), "");

最后, eww 。请不要写那样的c ++。 恕我直言 如果语句为一行删除括号没有任何问题,但尝试让所有内容都可读,以便下一个人不想将他们的大脑吹出来试图弄清楚发生了什么。

string Lexicon::convertOntology(string input, int d, string out, string temp)
{
  if (input.length() == 0 && temp.length() == 0) 
    return out; 
  else 
  {
    int r = 1;
    if (d == 1) 
      r = 0; 
    if (input[0] == '.' || input[0] == '-' || input == "") 
      return convertOntology(input.substr(1), d, out+=vectorSearch(list, temp, 0, d, r), "");
    else 
      return convertOntology(input.substr(1), d, out, temp);
  }
}