1

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

4

3 回答 3

4

您的第二个参数采用对某种指针的非常量左值引用,但您传递的是右值(NULL)。您不能将右值绑定到非常量左值引用。您需要传递一个左值:

threadBinaryTreeNode<T>* p = NULL;
x.inThread( somePtr, p );
于 2013-10-13T08:47:24.783 回答
1

第二个参数是threadBinaryTreeNode<T>*& pre你不能传递NULL给它。

threadBinaryTreeNode<T> *empty = 0; // Pass empty to the method instead of NULL

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

于 2013-10-13T08:47:44.113 回答
0

由于您的函数的第二个参数是非常量引用,因此您需要提供一个变量,如下所示

threadBinaryTreeNode<char>* ptr = NULL;
inThread(..., ptr);
于 2013-10-13T08:47:47.000 回答