1

何が悪いのかわからない。私はC ++にかなり慣れていませんが、問題はありません。他のスタック オーバーフロー ページをたくさん読みましたが、どれも私の問題に対処していないようです。

これは端末から

Joshs-MacBook-Pro:desktop Josh$ g++ BinaryCompare.cpp
BinaryCompare.cpp: In function ‘int main()’:
BinaryCompare.cpp:9: error: missing template arguments before ‘(’ token

これがコードです。

#include <iostream>
#include <string>

using namespace std;

bool isGreater(string a, string b);

int main (){
    if(greater("11", "00"))
        cout << "hello"<<endl;
  return 0;
}

bool isGreater(string a, string b){
    if(a.length() > b.length() ) return false;
    if(a.length() < b.length() ) return true;

    for(int i= 0; i < a.length(); i++){
        if(a[i] != b[i]){
            if(a[i] == '1') return false;
            return true;
        }
    }
    return false;   
}
4

3 に答える 3

5

using namespace stdこれは、が必ずしも良い考えではない理由の良い例です。

タイプミスしました

if(greater("11", "00"))

本当にあるべきもの

if(isGreater("11", "00"))

...そして、ホールセールをインポートしたばかりの名前空間で定義されたクラス テンプレートの名前をヒットすることができます。stdこれにより、紛らわしいエラーメッセージが表示されます。

于 2013-07-21T21:03:59.867 に答える
2

greater()isGreater()if 内の 9 行目に置き換える必要があります。

于 2013-07-21T21:01:30.200 に答える
1

greater9 行目で を呼び出すように呼び出しを 修正する以外に、単に を返す代わりに、またはの最初の数行でisGreater両方の文字列が同じ長さになるまで、文字列に 0 を埋め込むことを確認することをお勧めします。truefalseisGreater

于 2013-07-21T21:03:37.800 に答える