【发布时间】:2014-08-29 07:06:23
【问题描述】:
我正在尝试创建一个通用节点类,它可以存储对其他通用节点的引用,这些节点可以具有不同的数据类型。
template < class T >
class BiTreeNode {
T d;
BiTreeNode *parent; //Trying to store a node of different type here
public:
BiTreeNode(void);
BiTreeNode(T);
void setData(T);
T * getData(void);
void setParent(BiTreeNode * const); // Error here.
BiTreeNode * getParent(void);
};
具体错误:
Error 1 error C2664: 'void BiTreeNode<char>::setParent(BiTreeNode<char> *const )' : cannot convert argument 1 from 'BiTreeNode<int> *' to 'BiTreeNode<char> *const ' (File Location) 42 1 P=NP
【问题讨论】:
-
这行不通,因为如果
T1和T2不是同一类型,则BiTreeNode<T1>与BiTree<T2>不是同一类型。但你在问什么? -
(File Location)包含42和P=NP之类的东西? :D -
@tgmath 没有足够的复活节彩蛋?
-
@juanchopanza 我正在尝试在
*parent中存储另一个不同类型的节点,它给出了一个错误:/ -
你不能。您将需要所有二叉树节点类型的通用基类。
标签: c++ templates generics tree nodes