17 / 17 / 2
Регистрация: 23.02.2012
Сообщений: 132
1

Дружественные функции при множественном наследовании

05.12.2018, 16:17. Показов 269. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет.
Объясните, как правильно написать.
Есть класс
C++
1
2
3
4
5
6
7
8
9
class Data
{
protected:
    char * str;
public:
    Data();
...
    friend std::ostream & operator<<(std::ostream & os, const Data & d);
};
Есть абстрактный класс
C++
1
2
3
4
5
6
7
8
9
10
class Node
{
protected:
    Node* next = nullptr;
    Node* prev = nullptr;
public:
    Node();
    virtual Node * getNext() = 0;
...
};
Создали класс на основе этих двух
C++
1
2
3
4
5
6
7
class DataNode : public Data, public Node
{
public:
    DataNode();
...
    friend std::ostream & operator<<(std::ostream & os, const DataNode & dn);
}
Создаем класс, например списка, который работает только с типом Node.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class List
{
private:
    Node * head;
    Node * tail;
public:
    List();
...
    friend  std::ostream & operator<<(std::ostream & os, const List & l)
    {
        Node * tmp = head;
        while (node)
        {
            os << tmp; // Вот тут мне не понятно
            tmp = tmp->getNext();
        }
        return os;
    }
}
Вопрос. Как нужно реализовать оператор <<, что бы зная только про класс Node, он мог использовать оператор << из класса DataNode?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2018, 16:17
Ответы с готовыми решениями:

Неоднозначность при множественном наследовании
Привет всем, столкнулся с проблемой при множественном наследовании классов. Надеюсь, кто-нибудь...

Конструктор при множественном наследовании
#include &lt;string&gt; class Worker // an abstract base class { private: std::string...

Инициализация при множественном наследовании
Имеется иерархия типов. Во главе: базовый класс-интерфейс, далее один базовый класс, от него два...

Конструкторы с параметрами при множественном наследовании
у меня есть класс, quotes который является базовым для двух классов moving_average и rsi...

0
05.12.2018, 16:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.12.2018, 16:17
Помогаю со студенческими работами здесь

Порядок вызова конструкторов при множественном наследовании
Здравствуйте, меня интересует вопрос, как изменить последовательность вызова конструкторов базовых...

Помогите найти ошибку при множественном наследовании
Помогите разобраться в наследовании Прилагаю код #include &lt;iostream&gt; using namespace...

Компилятор не видит класс при множественном наследовании
Есть два одноименных класса. Один класс - подкласс SomeClass. Другой класс - наследник первого...

Конфликт имен при множественном наследовании struct
Уважаемые гуру, помогите разрешить конфликт имён в приведённом ниже примере, не изменяя структуру...

При множественном наследовании не работает getline(std::cin, ?)
Изучаю множественное наследование, так вот, нужно ввести два слова, но программа просто пропускает ...

Реализация двух виртуальных методов с одинаковыми именами при множественном наследовании
Доброй ночи. Надеюсь, я внятно описал что меня интересует в названии топика. Теперь распишу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru