错误:没有匹配函数来调用...(std :: string&)

时间:2013-05-19 02:02:10

标签: c++

我收到以下编译错误

  

错误:没有匹配函数来调用'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);

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

2 个答案:

答案 0 :(得分:4)

您必须明确地提供模板参数:

infxTree<Foo>(infxStr)

Foo是提供给模板化tnode类的类类型。

答案 1 :(得分:3)

由于函数签名中没有关于T是什么的线索,因此必须将其明确指定为模板类型参数。

inxTree<int>(infxStr);

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

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