我正在尝试制作一个通用节点类,该类可以存储对其他通用节点的引用,这些通用节点的数据可以具有不同的类型。template < class T >class BiTreeNode { T d; BiTreeNode *parent; //Trying to store a node of different type herepublic: 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 最佳答案 即使看起来它们具有相同的名称,不同的模板实例也不相关。模板是为代码重用而设计的,每个具有不同类型的模板实例实际上是完全不同的类类型,没有多态关系。BiTreeNode<int>和BiTreeNode<char>是2个不同的类,没有通用的基类。如果仅在类名中读取符号,就很容易记住这一点。要实现您要在那里实现的目标,只需让模板化类派生自一个通用基类即可:class BaseTreeNode{};template < class T >class BiTreeNode : public BaseTreeNode{ T d; BaseTreeNode *parent;...}这样,创建的每个模板化类都派生自同一类,并且您具有所需的多态性。关于c++ - C++通用节点类不会采用其他类型的节点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25563240/ 10-09 06:37