Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > C++ > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 07.12.2018, 14:20   #11
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,163
По умолчанию

Цитата:
Сообщение от Wurgengel Посмотреть сообщение
Вы не поняли
Нет, это вы не поняли. Читайте про полиморфизм.


Цитата:
Сообщение от Wurgengel Посмотреть сообщение
В классе Node я могу прописать только виртуальные функции
Да, а в классе NodeData вы можете их переопределить.
Читайте про полиморфизм.
waleri вне форума Ответить с цитированием
Старый 07.12.2018, 14:32   #12
Wurgengel
Новичок
Джуниор
 
Регистрация: 07.12.2018
Сообщений: 6
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Нет, это вы не поняли. Читайте про полиморфизм.



Да, а в классе NodeData вы можете их переопределить.
Читайте про полиморфизм.
ок.

Смотрите:
Код:
class Data {
protected:
   char* text;
public:
   Data();
   ...
}
Код:
class Node {
protected:
   Node * next;
   Node * prev;
public:
   Node();
   ...
}
Код:
class NodeData : public Node, public Data {
public:
   NodeData();
   ...
}
Код:
class List {
private:
   Node * head;
public:
   List();
   void print() {
      char * str = КАК ПОЛУЧИТЬ text из Data
   }
По условию я в классе List могу использовать ТОЛЬКО класс Node,
а передавать могу NodeData. Класс Node НЕ ЗНАЕТ о классе Data.
Мне интересно, прав я, что без преобразования Node* в NodeData*
нельзя вытащить строку или я что то упустил.

з.ы. Я знаю, что можно через шаблоны и без множественного наследования. Но это ЛАБА. И там такие условия.

Последний раз редактировалось Wurgengel; 07.12.2018 в 14:34.
Wurgengel вне форума Ответить с цитированием
Старый 07.12.2018, 15:57   #13
Alex11223
Заблокирован
 
Регистрация: 12.01.2011
Сообщений: 19,504
По умолчанию

Зачем print в нем?
Alex11223 вне форума Ответить с цитированием
Старый 07.12.2018, 17:20   #14
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

Цитата:
Сообщение от Wurgengel Посмотреть сообщение
Шаблоны - это след лаба. А вот в этой ему надо иммено множественное наследование.
множественное наследование нужно отрабатывать на задачах,
где оно реально необходимо.
а не притягивать всякий бред за уши.

ты сейчас пытаешься зайти на первый этаж через чердак.
причем двигаясь раком, жопой вперед.

https://rextester.com/MKVXOO58179

Код:
#include <iostream>

class Data {
protected:
   const char* text;
public:
    Data():text("govno-code"){} 
};

class Node {
protected:
   Node * next;
   Node * prev;
public:
   Node(){}
    
   virtual const char* zerez_jopy() = 0;
};


class NodeData : public Node, public Data {
    
    virtual const char* zerez_jopy() override
    {
        return Data::text;
    }
    
public:
    NodeData(){}
};


class List {
private:
   Node * head;
public:
   List():head(new NodeData){}
    
   void print() {
      const char * str = head->zerez_jopy();
      std::cout << str << '\n'; 
   }
};
 
int main()
{
    List kyinya;
    
    kyinya.print();
}
_Bers вне форума Ответить с цитированием
Старый 07.12.2018, 18:50   #15
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,163
По умолчанию

Цитата:
Сообщение от Wurgengel Посмотреть сообщение
Мне интересно, прав я, что без преобразования Node* в NodeData*
нельзя вытащить строку или я что то упустил.
Вы упустили, много чего!
Читайте про полиморфизм!
Сделайте виртуальную функцию в классе Node и переопределите ее в классе NodeData и будет вам счастье...
waleri вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественное наследование RAFA91 Общие вопросы .NET 18 05.10.2015 14:53
Множественное наследование Алексей201 Visual C++ 4 16.12.2013 04:35
Множественное наследование midiss Visual C++ 2 31.05.2013 12:52
Множественное наследование coNsept Общие вопросы C/C++ 5 12.06.2012 17:18
[с++] Множественное наследование huichos Общие вопросы C/C++ 3 16.12.2011 18:25


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS