NULL与模板参数不匹配?

时间:2013-10-13 08:45:09

标签: c++ c++11

我宣布了一个模板类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,我该怎么办?

3 个答案:

答案 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

此外,最好使用0nullptr而不是NULL

答案 2 :(得分:0)

由于你的函数的第二个参数是非const引用,你需要提供一个变量,类似这样的

threadBinaryTreeNode<char>* ptr = NULL;
inThread(..., ptr);