我宣布了一个模板类threadBinaryTree
和一个函数
void threadBinaryTree<T>::inThread
(threadBinaryTreeNode<T>*root,threadBinaryTreeNode<T>*& pre)
但符合错误:
no matching function for call to ‘threadBinaryTree<char>::inThread
(threadBinaryTreeNode<char>*, NULL)’|
pre
需要初始化为NULL,我该怎么办?
答案 0 :(得分:4)
你的第二个参数对某种指针采用非const左值引用,但是你传递一个rvalue(NULL)。您不能将rvalue绑定到非const左值引用。你需要传递一个左值:
threadBinaryTreeNode<T>* p = NULL;
x.inThread( somePtr, p );
答案 1 :(得分:1)
第二个参数是threadBinaryTreeNode<T>*& pre
,因此您无法将NULL
传递给它。
threadBinaryTreeNode<T> *empty = 0; // Pass empty to the method instead of NULL
此外,最好使用0
和nullptr
而不是NULL
。
答案 2 :(得分:0)
由于你的函数的第二个参数是非const引用,你需要提供一个变量,类似这样的
threadBinaryTreeNode<char>* ptr = NULL;
inThread(..., ptr);