Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 成员引用基类型';节点<;int>*';不是一个结构或联盟_C++_Templates_Data Structures - Fatal编程技术网

C++ 成员引用基类型';节点<;int>*';不是一个结构或联盟

C++ 成员引用基类型';节点<;int>*';不是一个结构或联盟,c++,templates,data-structures,C++,Templates,Data Structures,我正在尝试创建一个二叉树结构。我有一个节点类和一个树类来处理节点。当我编译的时候,我遇到了这个错误,我无法找出是什么错了 这是我的节点类 template < typename NODETYPE > class Node { friend class Tree<NODETYPE>; friend class Queue<NODETYPE>; private: NODETYPE m_Data; Node<NODETYPE&g

我正在尝试创建一个二叉树结构。我有一个节点类和一个树类来处理节点。当我编译的时候,我遇到了这个错误,我无法找出是什么错了

这是我的节点类

template < typename NODETYPE >
class Node
{
    friend class Tree<NODETYPE>;
    friend class Queue<NODETYPE>;
private:
    NODETYPE m_Data;
    Node<NODETYPE> *m_pLeft;
    Node<NODETYPE> *m_pRight;
    Node<NODETYPE> *m_pNext;

public:
    //-------------------------------------
    //-- Constructor                      -
    //-------------------------------------
    Node( const NODETYPE &node_data )
        :m_Data( node_data ),
         m_pLeft( 0 ),
         m_pRight( 0 ),
         m_pNext( 0 )
        {
        };

    //-------------------------------------
    //-- Get Node Data                    -
    //-------------------------------------
    NODETYPE get_data() const { return m_Data; };
};
模板
类节点
{
朋友类树;
好友类队列;
私人:
节点类型m_数据;
节点*m_pLeft;
节点*m_pRight;
节点*m_pNext;
公众:
//-------------------------------------
//--建造师-
//-------------------------------------
节点(常量节点类型和节点数据)
:m_数据(节点_数据),
m_pLeft(0),
m_pRight(0),
m_pNext(0)
{
};
//-------------------------------------
//--获取节点数据-
//-------------------------------------
NODETYPE get_data()常量{return m_data;};
};
我的树课

template < typename NODETYPE >
class Tree
{
private:
    Node<NODETYPE> *m_pRoot;

    //--------------------------------------
    //-- Utility Functions                 -
    //--------------------------------------
    void insert_helper( Node<NODETYPE> **pNode, const NODETYPE &node_data );

public:
    //--------------------------------------
    //-- Constructor / Destructor          -
    //--------------------------------------
    Tree()
        :m_pRoot( 0 ) {};
    ~Tree();

    //--------------------------------------
    //-- Public Member Functions           -
    //--------------------------------------
    void insert_new_node( const NODETYPE &node_data );
    void levelOrder_traversal() const;
};
模板
类树
{
私人:
节点*m_pRoot;
//--------------------------------------
//--效用函数-
//--------------------------------------
void insert\u helper(节点**pNode、常量节点类型和节点\u数据);
公众:
//--------------------------------------
//--构造函数/析构函数-
//--------------------------------------
树()
:m_pRoot(0){};
~Tree();
//--------------------------------------
//--公职人员职能-
//--------------------------------------
无效插入新节点(常量节点类型和节点数据);
void levelOrder_遍历()常量;
};
我是在成员函数“insert_new_node()”中得到错误的。 下面是实现

//------------------------------------------
//-- Insert New Node In Tree               -
//------------------------------------------
template < typename NODETYPE >
void Tree<NODETYPE>::insert_new_node( const NODETYPE &node_data )
{
    insert_helper( &m_pRoot, node_data );
}



//------------------------------------------
//-- Insert New Node Helper                -
//------------------------------------------
template < typename NODETYPE >
void Tree<NODETYPE>::insert_helper( Node<NODETYPE> **pNode, const NODETYPE &node_data )
{
    if( *pNode == 0 )
    {
        *pNode = new Node<NODETYPE>( node_data );
    }
    else
    {
        if( node_data < ( *pNode->get_data() ) ) <---- LINE THAT THROWS ERROR
        {
            insert_helper( &(*pNode -> m_pLeft), node_data );
        }
        else if( node_data > *pNode -> get_data() )
        {
            insert_helper( &(*pNode -> m_pRight), node_data );
        }
        else
        {
           std::cout << "Node Value '" << node_data << "' is a duplicate"
                     << std::endl;
        }
    }
}
//------------------------------------------
//--在树中插入新节点-
//------------------------------------------
模板
无效树::插入新节点(常量节点类型和节点数据)
{
插入辅助对象(&m\U pRoot,节点\U数据);
}
//------------------------------------------
//--插入新节点辅助对象-
//------------------------------------------
模板
void Tree::insert\u helper(节点**pNode、常量NODETYPE和节点\u数据)
{
如果(*pNode==0)
{
*pNode=新节点(节点\数据);
}
其他的
{
如果(node_data<(*pNode->get_data())m_pLeft),node_data);
}
else if(node_data>*pNode->get_data())
{
插入辅助对象(&(*pNode->m_pRight),节点数据);
}
其他的
{

std::cout在
*
之前发生
->
,因此编译器试图使用->获取
节点**
上的数据,但该节点不起作用

而不是

*pNode->get_data()
使用


发布错误会很有帮助,谢谢你,这很有效。不过我三分钟内无法接受答案
*pNode->get_data()
(*pNode)->get_data()