c++ - 类继承问题
问题描述
我正在尝试实现 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()
我该如何解决这个问题?
解决方案
正如错误消息所说,这一行:
node_AVL *node1 = node2.getRight();
不起作用,因为getRight()
返回一个node*
. node1
您可以通过制作来解决此问题node*
,如下所示:
node *node1 = node2.getRight();
对于第二部分,您需要执行以下操作:
node node;
node.getRight()->setHeight(1);
这也行不通,因为setHeight
它是node_AVL
.
您也许应该重新设计您的课程,牢记您要完成的工作。
推荐阅读
- node.js - 如何在 node.js 中为数字签名生成公钥私钥对?
- api - 禁用与 PowerShell 的最终用户通信
- javascript - CSS 文本右对齐不起作用。如何解决?
- django - user.username 的属性(?)是什么?
- android - 添加实现 apache 库时出现“META-INF/DEPENDENCIES”错误
- sql - 如何计算和更新 SQL Server 表中的小计
- swift - IOS <11上似乎忽略了“延迟着陆”属性
- c - 我在重新分配后得到一个断点。为什么?我怎样才能使它正确?
- php - 如何将 svg 显示为具有 URL 中给出的背景颜色的图像
- spring - Spring / IntelliJ 在停止时不会清除会话数据