获取错误:在'('标记之前)缺少模板参数

时间:2013-07-21 20:59:38

标签: c++

我不确定是什么问题。我对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;   
}

3 个答案:

答案 0 :(得分:5)

这是一个很好的例子,为什么using namespace std并不总是一个好主意。

你错了

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

应该是

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

...并设法点击您刚刚导入全部销售的a class template defined in the std namespace名称。从而产生令人困惑的错误信息。

答案 1 :(得分:2)

greater()应该替换为第9行中的isGreater()

答案 2 :(得分:1)

除了修复greater调用以在第9行调用isGreater之外,您可能希望确保用零填充字符串,直到两个字符串长度相同,而不是只需在true的前几行中返回falseisGreater