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

除了修复在第 9 行greater调用 的调用之外isGreater,您可能还需要确保用零填充字符串,直到两个字符串的长度相同,而不是只返回truefalseisGreater.

于 2013-07-21T21:03:37.800 回答