2013-02-16 50 views
0

这个功能是二叉树类二叉搜索树,错误的预定,不知道是什么错误

/*********************** 
* 
* give preorder of tree 
* 
* ********************/ 

void preorder(Node * node, std::ostream &p_str){ 
    if(node != NULL){ 

      //p_str << node->Data() << " "; 

      if(node->m_ll) { 

        preorder(node->m_ll, &p_str); 

      } 

      if(node->m_rl) { 

        preorder(node->m_rl, &p_str); 
      } 
    } 
} 

这让来电来访类以外的内部。递归遍历树,从根

void preorder(Node * node, std::ostream &p_str){ 
    if(node != NULL){ 

      //p_str << node->Data() << " "; 

      if(node->m_ll) { 

        preorder(node->m_ll, &p_str); 

      } 

      if(node->m_rl) { 

        preorder(node->m_rl, &p_str); 
      } 
    } 
} 

我得到这样的错误

Tree.h:337: error: no matching function for call to  'CTree<int>::preorder(CTree<int>::Node*&, std::ostream*)' 
Tree.h:330: note: candidates are: void CTree<T>::preorder(CTree<T>::Node*, std::ostream&) [with T = int] 
Tree.h:343: error: no matching function for call to 'CTree<int>::preorder(CTree<int>::Node*&, std::ostream*)' 
Tree.h:330: note: candidates are: void CTree<T>::preorder(CTree<T>::Node*, std::ostream&) [with T = int] 

的我俯瞰的相当简单的事情,任何想法?

回答

0

preorder(node->m_ll, &p_str);应该是preorder(node->m_ll, p_str);

0

您不需要传递地址ostream对象。该功能正在采取参考,不是指针:

preorder(node->m_rl, p_str); 
0

你的函数期望通过引用的说法,但&p_str是一个指针。您可以拨打preorder(node->m_ll, p_str);

+0

是的。那工作。 D'哦 – tausch86 2013-02-16 00:50:23