Вопрос наследования классов - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь реализовать дерево 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_AVL *

Узел класса не имеет члена setHeight ()

Как я могу решить эту проблему

1 Ответ

0 голосов
/ 24 апреля 2020

Как говорится в сообщениях об ошибках, эта строка:

node_AVL *node1 = node2.getRight();

не работает, потому что getRight() возвращает node*. Вы можете исправить это, сделав node1 a node*, например:

node *node1 = node2.getRight();

Для второй части вам нужно сделать что-то вроде:

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

Это не не работает, так как setHeight является членом node_AVL.

Возможно, вам следует изменить класс, учитывая то, что вы пытаетесь достичь sh.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...