我正试图实现一个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()
如何解决这个问题?
正如错误信息所说,这一行。
node_AVL *node1 = node2.getRight();
不能用,因为 getRight()
返回一个 node*
. 你可以通过以下方式来解决这个问题 node1
a node*
,像这样。
node *node1 = node2.getRight();
对于第二部分,你需要做这样的事情:
node node;
node.getRight()->setHeight(1);
这也不行,因为 setHeight
属于 node_AVL
.
你也许应该重新设计你的课,记住你要达到的目的。