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()