C++ 使用来自同一类(节点类)的属性创建派生类
我的代码有问题。我试图为AVL树创建一个派生的节点类,它派生自一个简单的节点类C++ 使用来自同一类(节点类)的属性创建派生类,c++,class,oop,inheritance,C++,Class,Oop,Inheritance,我的代码有问题。我试图为AVL树创建一个派生的节点类,它派生自一个简单的节点类 class Node { protected: int *value; Node *leftChild; Node *rightChild; friend class BST; }; class NodeAVL : public Node { private: int *balanceFactor; fr
class Node
{
protected:
int *value;
Node *leftChild;
Node *rightChild;
friend class BST;
};
class NodeAVL : public Node
{
private:
int *balanceFactor;
friend class AVL;
public:
///some code
};
因此,我需要我的NodeAVL的两个孩子也是NodeAVL类,并且我必须从基类继承它们(这是必需的)。但由于leftChild和rightChild在基类中声明为Node*,所以我不能直接这样做。我不知道如何解决这个问题,所以我需要一些帮助
有什么想法吗?
节点*
允许指向任何节点
后代,包括NodeAVL
。如果是,您可以将其强制转换为NodeAVL*
,这是允许的。如果您不确定,请改用dynamic_cast
(但是Node
必须是多态的才能工作)。请参阅您可以使用模板:templateclass节点{T*left;T*right;}
它给了我一些错误,实际上不起作用。@Catalyst259您会遇到什么错误?节点*
允许指向任何节点
后代,包括节点AVL
。如果是,您可以将其强制转换为NodeAVL*
,这是允许的。如果您不确定,请改用dynamic_cast
(但是Node
必须是多态的才能工作)。请参阅您可以使用模板:templateclass节点{T*left;T*right;}代码>它给了我一些错误,实际上不起作用。@Catalyst259您会遇到什么错误?