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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
FraGas
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 11
#1

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

20.06.2014, 00:00. Просмотров 493. Ответов 19
Метки нет (Все метки)

Добрый вечер! Задача: Сделать наследование без использования ":".
Заранее спасибо!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
20.06.2014, 00:00     Наследование без использования двоеточия
Посмотрите здесь:

Структура программы или наследование, без использования конструктора базового класса - C++
Всем доброго времени суток. Снова прошу вас о помощи! Код располагается по ссылке в спойлере - не вставлю сюда, так как слишком...

Сортировка, без использования массивов - C++
Скажите, пожалуйста, можно-ли, имея в "распоряжении" только операторы выбора и циклы(никаких массивов!) выполнить следующее задание: ...

Вывод чисел от 1 до N без использования while, for - C++
Здравствуйте! Помогите пожалуйста, не могу разобраться в чем дело. На выходе числа 1 и 2 не зависимо от входных. #include <iostream> ...

БЕЗ использования библиотечных функций - C++
Помогите написать программу... Написать программу, которая (без использования библиотечных функций для обработки строк), копировала бы...

Решить без использования массивов - C++
Даны шары 5-ти цветов: (Желтый, Синий, Зеленый, Красный, Черный). В таком порядке, в котором написано. Написать программу которая их...

Сортировка файла без использования массивов - C++
помогите, плиз, задачка простенькая. (не знаю, как отсортировать без массива) дан файл целых чисел, отсортировать его, не используя...

Исправить без использования глобальных переменных - C++
#include<iostream> using namespace std; int a,n,maximum=-1000,x; void zapros() { cout<<"Vvedite razmer massiva"<<endl; } ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Jewbacabra
Эксперт PHP
2267 / 1931 / 723
Регистрация: 24.04.2014
Сообщений: 5,630
20.06.2014, 00:04     Наследование без использования двоеточия #2
Цитата Сообщение от FraGas Посмотреть сообщение
Сделать наследование без использования ":"
чем : не угодило?
FraGas
0 / 0 / 0
Регистрация: 26.01.2014
Сообщений: 11
20.06.2014, 00:10  [ТС]     Наследование без использования двоеточия #3
Требование преподавателя
Jewbacabra
Эксперт PHP
2267 / 1931 / 723
Регистрация: 24.04.2014
Сообщений: 5,630
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
Я его в точности процетировал.
Убежденный
Системный программист
Эксперт С++
15299 / 6931 / 1096
Регистрация: 02.05.2013
Сообщений: 11,341
Завершенные тесты: 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
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,495
Записей в блоге: 4
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 ;
}
Убежденный
Системный программист
Эксперт С++
15299 / 6931 / 1096
Регистрация: 02.05.2013
Сообщений: 11,341
Завершенные тесты: 1
20.06.2014, 00:35     Наследование без использования двоеточия #8
C++
1
#define derives_without_doublePoint :
IGPIGP, жаль, триграфа подходящего нет, чтобы двоеточие замаскировать
IGPIGP
Комп_Оратор)
Эксперт по математике/физике
6444 / 3083 / 306
Регистрация: 04.12.2011
Сообщений: 8,495
Записей в блоге: 4
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
Сообщений: 157
20.06.2014, 03:34     Наследование без использования двоеточия #10
ну дык производный класс можно же вписать в родительский класс
zss
Модератор
Эксперт С++
6322 / 5906 / 1913
Регистрация: 18.12.2011
Сообщений: 15,189
Завершенные тесты: 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
Модератор
Эксперт CЭксперт С++
13063 / 7326 / 817
Регистрация: 27.09.2012
Сообщений: 18,085
Записей в блоге: 3
Завершенные тесты: 1
20.06.2014, 08:38     Наследование без использования двоеточия #12
Цитата Сообщение от IGPIGP Посмотреть сообщение
Кто скажет, что наследование с двоеточием получилось
транслятор. Ему то препроцессор код уже с двоеточием отдаст
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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>
))).

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

Консольное приложение C++ без использования vcredist - C++
Доброго времени суток! Написал маленькую программулинку в VS2012, но для запуска на старых машинах она требует vcredist 2012. Возможно...

Переписать программу без использования указателей - C++
Всем привет. Есть программа с указателями , как сделать её без указателей? #include&lt;stdio.h&gt; #include&lt;stdlib.h&gt; ...

Монотонная последовательность без использования функций - C++
#include &quot;stdafx.h&quot; #include&lt;iostream&gt; #include&lt;cstdlib&gt; #include&lt;cmath&gt; int factorial(int n) { return !n ? 1 : n *...

Создание стека без использования классов - C++
На первом шаге нужно создать стек включением в него k целых чисел в возрастающей последовательности. Потом (второй шаг) нужно включить в...

Задача без использования типа string - C++
Слова текста из малых латинских букв записаны не менее чем через один пробел; БЕЗ ИСПОЛЬЗОВАНИЯ КОНСТРУКЦИИ STRING: а) написать программу...


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

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

Добавлено через 2 минуты
Цитата Сообщение от Deiron Посмотреть сообщение
Вообще, тут надо точно знать, что имел ввиду препод...
Поддерживаю. Но боюсь не готов. Нервы нужно железные.
Yandex
Объявления
20.06.2014, 12:56     Наследование без использования двоеточия
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru