0

この一連のエラーは 1 つの関数が原因であり、これらのエラーはどれも有効ではありません

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 回繰り返されます。これらはエラーではなく、テキストを解析するコンパイラの問題であることは明らかです。この上流には比類のないものがあります。前の関数をチェックし、この関数が呼び出される前の行をチェックしましたが、何も見つかりませんでした。

これらのエラーを解決するにはどうすればよいですか?

4

1 に答える 1

2

まず第一に、inという変数を渡しますが、関数全体で参照しますinput

次に、最初に空の文字列をチェックするin[0] == '.' || in[0] == '-' || in == ""別の順序でもこれをチェックする必要があります。文字列空の場合、最初の要素にアクセスしようとすると、プログラムがここでクラッシュします。最初に置く。[0]in == ""

第三に、list私が見ることができるどこにも定義されておらず、ここで使用されています。vectorSearch(list, temp, 0, d, r), "");

最後に、えー。そのようにC++を書かないでください。私見ですが、1 行の if ステートメントで角かっこを使用することには何の問題もありませんが、次の人が何が起こっているのかを理解しようとして脳を吹き飛ばしたくないので、すべてを読みやすくするようにしてください。

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);
  }
}
于 2012-07-25T20:09:56.437 に答える