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>();

09-12 17:00