2013-05-19 51 views
2

我得到以下编译器错误错误:调用...(的std :: string&)

error: no matching function for call to 'infxTree(std::string&)'

对于该位的代码不匹配功能。

int main(){ 
string infxStr; 

cout << "Enter an infix string: " << endl; 
cin >> infxStr; 


prefixOutput(infxTree(infxStr)); 
postorderOutput(infxTree(infxStr), ' '); 
displayTree(infxTree(infxStr), infxStr.size()); 
    return 0; 

}

我得到的所有的最后3行错误。这里的功能:

template <typename T> 
tnode<T> infxTree(const string& iexp); 

任何想法我做错了什么?谢谢!

回答

4

你必须给明确的模板参数:

infxTree<Foo>(infxStr) 

哪里Foo是提供给您的模板tnode类的类类型。

+0

谢谢!该程序仍然不起作用,但至少现在它编译,所以我可以尝试找出原因!多谢。 – Gray

3

由于函数签名中没有关于T是什么的线索,所以必须明确指定它作为模板类型参数。

inxTree<int>(infxStr); 

这可以,如果你有依赖于T任何参数,可以省略,编译器可以用它来推断类型:

node<T> inxTree(string str, T item) { /* ... */ } 
int item; 
inxTree(infxStr, item); // OK 
相关问题