template <typename T>
BinaryTreeNode<T> takeinput();
template <typename T>
BinaryTreeNode<T>* take_input()
{
T rootdata;
cout << "enter data ";
cin >> rootdata;
if(rootdata == -1 || rootdata == 'n') {
return nullptr;
}
BinaryTreeNode<T>* root = new BinaryTreeNode<T>(rootdata);
root->left = takeinput(); // got error in this line
root->right = takeinput();
return root;
}
[Error] no matching function for call to 'takeinput()'
[Note] candidate is
[Note] template<class T> BinaryTreeNode<T> takeinput()
[Note] template argument deduction/substitution faile
[Note] couldn't deduce template parameter 'T'
在这个我没有匹配的函数接受输入错误
但我做得很好
最佳答案
问题在于模板参数不能通过配置左侧的表达式推导出。
root->left = takeinput();
takeinput
函数需要模板参数:root->left = takeinput<T>();