Форум программистов, компьютерный форум CyberForum.ru

Наследование без использования двоеточия - C++

Восстановить пароль Регистрация
 
FraGas
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 11
20.06.2014, 00:00     Наследование без использования двоеточия #1
Добрый вечер! Задача: Сделать наследование без использования ":".
Заранее спасибо!
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jewbacabra
1791 / 1506 / 540
Регистрация: 24.04.2014
Сообщений: 4,231
20.06.2014, 00:04     Наследование без использования двоеточия #2
Цитата Сообщение от FraGas Посмотреть сообщение
Сделать наследование без использования ":"
чем : не угодило?
FraGas
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 11
20.06.2014, 00:10  [ТС]     Наследование без использования двоеточия #3
Требование преподавателя
Jewbacabra
1791 / 1506 / 540
Регистрация: 24.04.2014
Сообщений: 4,231
20.06.2014, 00:15     Наследование без использования двоеточия #4
Цитата Сообщение от FraGas Посмотреть сообщение
Требование преподавателя
а к чему это требование относится и как оно дословно звучало?
не поверю что именно так:
Цитата Сообщение от FraGas Посмотреть сообщение
делать наследование без использования ":"
А пока такой вариант:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
#define THIS_IS_NOT_2_POINTS :
 
class Base {
public: int test;
};
 
class Derived THIS_IS_NOT_2_POINTS public Base {};
 
int main() {
    Derived d;
    d.test = 10;
    std::cout << d.test;
}
FraGas
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 11
20.06.2014, 00:22  [ТС]     Наследование без использования двоеточия #5
Я его в точности процетировал.
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
20.06.2014, 00:23     Наследование без использования двоеточия #6
Задание воистину бредовое. Мой вариант:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
struct my_type;
 
namespace std
{
 
template <>
class basic_ios<my_type>
{
};
 
} // namespace std
 
int main()
{
    using namespace std;
    basic_ios<my_type> MyType;
    return 0;
}
Здесь создается наследник ios_base в виде basic_ios, параметризированного
собственным типом my_type. Заметьте - ни одного двоеточия !
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 284
Регистрация: 04.12.2011
Сообщений: 7,712
Записей в блоге: 3
20.06.2014, 00:28     Наследование без использования двоеточия #7
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//поражен замыслом вашего преподавателя
//каков вопрос - таков и ответ)
#define derives_without_doublePoint :
#include <iostream>
using namespace std ;
class BaseCl{
public  derives_without_doublePoint virtual void foo(){cout <<"Base"<<endl;}
};
 
class Derived
    derives_without_doublePoint public BaseCl
{
    virtual void foo(){cout <<"Derived"<<endl;}
};
int main()
{
BaseCl * ptr_base = new BaseCl();
ptr_base->foo();
ptr_base = new Derived();
ptr_base->foo();
cout << endl;
system("pause") ;
return 0 ;
}
Убежденный
Системный программист
 Аватар для Убежденный
14200 / 6215 / 986
Регистрация: 02.05.2013
Сообщений: 10,356
Завершенные тесты: 1
20.06.2014, 00:35     Наследование без использования двоеточия #8
C++
1
#define derives_without_doublePoint :
IGPIGP, жаль, триграфа подходящего нет, чтобы двоеточие замаскировать
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 284
Регистрация: 04.12.2011
Сообщений: 7,712
Записей в блоге: 3
20.06.2014, 01:52     Наследование без использования двоеточия #9
Цитата Сообщение от Убежденный Посмотреть сообщение
IGPIGP, жаль, триграфа подходящего нет, чтобы двоеточие замаскировать
Кто скажет, что наследование с двоеточием получилось, пусть бросит в меня классом. Или партой.

Добавлено через 57 минут
Убежденный, Ваш ответ с применением шаблонов наверное это то что нужно, но мне нравится мысль:
Цитата Сообщение от Убежденный Посмотреть сообщение
Задание воистину бредовое.
Кстати, если быть принципиальными и не ограничиваясь полумерами пойти дальше, то не только без двоеточия но и без наследования можно попробовать():
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std ;
 class BaseCl{
public  :   void foo(){cout <<"Base"<<endl;}//тут двоеточие
 
};
 
class Derived   
{
public  :   void foo(){cout <<"Derived"<<endl;}//и тут двоеточие...
};
 
int main()
{
BaseCl * ptr_base = new BaseCl();
ptr_base->foo();
ptr_base = reinterpret_cast<BaseCl*>( new Derived() );
reinterpret_cast<Derived*>(ptr_base)->foo();
cout << endl;
system("pause") ;
return 0 ;
}
Однако без двоеточий (если не за defin'ить) всё равно не получается.
А интересно, сколько в библиотеках определений шаблонов зарыто двоеточий?
Слежу за темой с возрастающим интересом.
Hsac
13 / 13 / 1
Регистрация: 30.06.2013
Сообщений: 146
20.06.2014, 03:34     Наследование без использования двоеточия #10
ну дык производный класс можно же вписать в родительский класс
zss
Модератор
Эксперт С++
 Аватар для zss
5947 / 5552 / 1784
Регистрация: 18.12.2011
Сообщений: 14,184
Завершенные тесты: 1
20.06.2014, 08:28     Наследование без использования двоеточия #11
У меня предположение, что преподаватель имел ввиду
вместо наследования использовать включение:
C++
1
2
3
4
5
6
7
8
9
10
class Base
{
... 
};
 
class Derived   
{
 Base bb;
...
};
Дождемся, что ответит ТС
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11836 / 6815 / 770
Регистрация: 27.09.2012
Сообщений: 16,900
Записей в блоге: 2
Завершенные тесты: 1
20.06.2014, 08:38     Наследование без использования двоеточия #12
Цитата Сообщение от IGPIGP Посмотреть сообщение
Кто скажет, что наследование с двоеточием получилось
транслятор. Ему то препроцессор код уже с двоеточием отдаст
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
20.06.2014, 09:50     Наследование без использования двоеточия #13
Цитата Сообщение от Убежденный Посмотреть сообщение
C++
1
namespace std { template <> class basic_ios<my_type> { };
Внесение класса в std это нормально?
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
20.06.2014, 10:46     Наследование без использования двоеточия #14
вообще, ИМХО, бред.
Наследование, если оно наследование, без ":" - не делается вообще никак. Ибо включение не есть наследование (класс "машина" включает в себя класс "двигатель", но никак не "является его наследником").

Есть другой вариант. Написать все на C# или Java. Там всякие implements и extends вместо
C++
1
:public <class>
))).

Вообще, тут надо точно знать, что имел ввиду препод...
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 284
Регистрация: 04.12.2011
Сообщений: 7,712
Записей в блоге: 3
20.06.2014, 12:56     Наследование без использования двоеточия #15
Цитата Сообщение от Croessmah Посмотреть сообщение
транслятор. Ему то препроцессор код уже с двоеточием отдаст
Конечно. А как иначе? Иначе никак. Если включить класс, то через указатель на базовый класс адресовать не получится. Хотя сохранение функциональности и неприкосновенности есть, всё-таки это внебрачное наследование. К тому же не понятно кто чей наследник! Папа внутри сына, это как страус внутри каждого из нас.
А если задефайнить двоеточие, то без двоеточия и получается.
Можно дефайн в заголовок вынести. В заголовочном комментов понаписать и не заметит может?
Думаю если вот так то точно не заметит:
файл DiabloPoints.h:
C++
1
2
3
4
5
//Наш препод, он на всё гаразд,
//Он гуманист и ПЕДАГОГ!
//бла-бла-бла в том же духе...
#define derived_without_doublePoints :
//бла-бла-бла в том же духе...
Но риск есть всегда.
В крайнем случае можно перевестись. (Препод без чувства юмора это же трагедия.)

Добавлено через 2 минуты
Цитата Сообщение от Deiron Посмотреть сообщение
Вообще, тут надо точно знать, что имел ввиду препод...
Поддерживаю. Но боюсь не готов. Нервы нужно железные.
Deiron
25 / 25 / 1
Регистрация: 25.05.2009
Сообщений: 98
20.06.2014, 13:08     Наследование без использования двоеточия #16
Поддерживаю. Но боюсь не готов. Нервы нужно железные.
Если у студента не железные нервы, то до диплома он не доживет...
IGPIGP
Комп_Оратор)
 Аватар для IGPIGP
6171 / 2900 / 284
Регистрация: 04.12.2011
Сообщений: 7,712
Записей в блоге: 3
20.06.2014, 14:07     Наследование без использования двоеточия #17
Цитата Сообщение от Deiron Посмотреть сообщение
Если у студента не железные нервы, то до диплома он не доживет...
Что да, то да. Как вспомню, так вздрогну...
Croessmah
20.06.2014, 14:11
  #18

Не по теме:

Цитата Сообщение от IGPIGP Посмотреть сообщение
так вздрогну...
так вздрогнем же за это

SatanaXIII
Супер-модератор
Эксперт С++
 Аватар для SatanaXIII
5548 / 2562 / 233
Регистрация: 01.11.2011
Сообщений: 6,333
Завершенные тесты: 1
20.06.2014, 14:21     Наследование без использования двоеточия #19

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
так вздрогнем же за это
Пятница.



А вообще давайте потихоньку закругляться с оффтопом. Надо дождаться ответа угрюмого преподавателя.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.06.2014, 14:22     Наследование без использования двоеточия
Еще ссылки по теме:

Вывод чисел от 1 до N без использования while, for C++
C++ Задача по программированию. (Без использования массива)
C++ Структура программы или наследование, без использования конструктора базового класса

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

Или воспользуйтесь поиском по форуму:
IGPIGP
20.06.2014, 14:22     Наследование без использования двоеточия
  #20

Не по теме:

Цитата Сообщение от Croessmah Посмотреть сообщение
так вздрогнем же за это
У меня 18/19-го днюхи племяша и сына. Разрыв в год и день. В год без дня, вернее))
Завтра придут. Оба студенты. Вздрагивать и вздрагивать...

Yandex
Объявления
20.06.2014, 14:22     Наследование без использования двоеточия
Ответ Создать тему
Опции темы

Текущее время: 08:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru