类继承问题

问题描述 投票:0回答:1

我正试图实现一个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);

我得到这些错误。

从节点*转换到节点_AVL*无效。

类节点没有成员setHeight()

如何解决这个问题?

c++ oop
1个回答
0
投票

正如错误信息所说,这一行。

node_AVL *node1 = node2.getRight();

不能用,因为 getRight() 返回一个 node*. 你可以通过以下方式来解决这个问题 node1 a node*,像这样。

node *node1 = node2.getRight();

对于第二部分,你需要做这样的事情:

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

这也不行,因为 setHeight 属于 node_AVL.

你也许应该重新设计你的课,记住你要达到的目的。

© www.soinside.com 2019 - 2024. All rights reserved.