我不确定是什么问题。我对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;
}
答案 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
的前几行中返回false
或isGreater
。