首页 > 解决方案 > 类继承问题

问题描述

我正在尝试实现 AVL 树。最初我实现了两个类,node 和 node_AVL:

class node{
protected:
    int info;
    node *l, *r;
public:
    node *getRight();
};

class node_AVL : public node{
protected:
    int height;
public:
    void setHeight(int):
};

例如,当我尝试访问节点的子节点时,就会出现问题:

node_AVL *node1 = node2.getRight();

或者

node_AVL node;
node.getRight().setHeight(1);

我收到这些错误:

从 node* 到 node_AVL* 的无效转换

类节点没有成员 setHeight()

我该如何解决这个问题?

标签: c++oop

解决方案


正如错误消息所说,这一行:

node_AVL *node1 = node2.getRight();

不起作用,因为getRight()返回一个node*. node1您可以通过制作来解决此问题node*,如下所示:

node *node1 = node2.getRight();

对于第二部分,您需要执行以下操作:

node node;
node.getRight()->setHeight(1);

这也行不通,因为setHeight它是node_AVL.

您也许应该重新设计您的课程,牢记您要完成的工作。


推荐阅读