这一组错误是由一个函数引起的,并且这些错误都不是有效的
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次 - 似乎很清楚这些不是错误,但是解析文本的编译器存在问题;这个上游有一些东西是无与伦比的。我检查了上一个函数,并在调用此函数之前检查了行,但没有找到任何内容。
如何解决这些错误?
答案 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);
}
}