C++ 使用来自同一类(节点类)的属性创建派生类

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

我的代码有问题。我试图为AVL树创建一个派生的节点类,它派生自一个简单的节点类

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您会遇到什么错误?