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

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

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


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

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

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


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

Цитата:
Сообщение от 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
Модератор
Заслуженный модератор
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,025
Репутация: 3738

icq: 512-765
skype: alexp.frl
По умолчанию

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

Цитата:
Сообщение от 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
Адрес: Нижний Новгород
Сообщений: 5,896
Репутация: 1915
По умолчанию

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

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Множественное наследование 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


08:20.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.