我收到以下编译错误
错误:没有匹配函数来调用'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);
任何想法我做错了什么?谢谢!
答案 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