Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

Неявные интерфейсы С++ шаблонов. Сложно о простом - C++

28.06.2016, 23:35. Просмотров 442. Ответов 3
Метки нет (Все метки)

Неявные интерфейсы С++ шаблонов. Сложно о простом.

Вот заметка в формате PDF о том, как использовать типизацию для параметров шаблонов.

Отдельные утверждения из заметки процитирую, не влезет сюда весь текст:
- Этот пример страдает проблемой дизайна С++ классов, которую в общем и кратко можно описать как "наследование используется не для реализации интерфейса".
- Почему происходит изменение дизайна.
- Неправильное использование template приводит к сильному дублированию кода и данных.
- Для явного задания интерфейса параметров шаблона в С++, можно использовать следующий предлагаемый способ описания
такого интерфейса:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//Ta_mwe::Tevent compile time interface
template<class Tevent>
class Ia_mwe_event{
public:
        //void m_event();
        typedef
            void
            (Tevent::* f_m_event)
            ();
 
public:
        Ia_mwe_event(){
            f_m_event m_event= &Tevent::m_event;
            }
};
1.
Возможно это не самый лучший способ, но хуже всего, когда изысканием таких способов типизации приходится заниматься во время написания приложения.

Я делал это вне написания приложения, когда оно уже было написано, так что вы можете тоже ознакомиться отдельно, если чувствуете что в программах иногда возникает необходимость в такой типизации.

2.
Да, вместе с кодом решения на "нынешнем С++" предлагается и вариант "модификации С++" для такой типизации (так, для общего развития), вот пример:
C++
1
2
3
4
//mouse wheel up
class Tevent_mw_up
interface: public Ia_mw_event{
public:
Конечно это только черновик такой модификации, но он скрывает все синтаксические нагромождения, которые очень напоминают попытки реализовать на чистом С классы С++.

PS:
Если кто не понял, то если у вас есть способ типизации параметров лучше, значит о нем тут надо написать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2016, 23:35
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Неявные интерфейсы С++ шаблонов. Сложно о простом (C++):

Определить, является ли next в простом предложении наречием. - C++ Builder
тут самое главное определить формальные признаки: 1.next- наречие в начале и конце предложения. 2.перед словами типа...

Unresolved External в простом консольном проекте - C++ Builder
Здравствуйте. Решил написать простой консольный проект в RAD Studio 2010 (С++ Builder). ...

Реализовать поиск в ширину в простом графе - Visual C++
Поиск в ширину--2 (вершины идентифицируются названиями) ограничение по времени на тест: 2 seconds ограничение по памяти на тест: 64...

Ошибка приложения в простом коде, реверс строки - Visual C++
Здравствуйте. Подскажите почему виндновс выдает сообшение об ошибке ? Тоесть компилятор пропускает код, но происходит какая то...

Неявные преобразования типов - C++
Недавно начал изучать С++. Решал задачу и наткнулся на проблему, что при выводе переменной, выдает значение 0. Не понимаю, как сам...

Неявные приведения в операциях - C++
В умной книжке написано, что в арифметических выражениях все операнды приводятся к одному типу, если это возможно, пример: int a = 5;...

3
ct0r
Игогошка!
1784 / 686 / 42
Регистрация: 19.08.2012
Сообщений: 1,321
Завершенные тесты: 1
29.06.2016, 10:33 #2
grizlyk, я не понял - в чем преимущества перед концептами?
0
grizlyk
0 / 0 / 0
Регистрация: 28.06.2016
Сообщений: 2
10.08.2016, 19:30  [ТС] #3
Цитата Сообщение от ct0r Посмотреть сообщение
grizlyk, я не понял - в чем преимущества перед концептами?
Все зависит от того насколько реализованы концепты в вашем компиляторе и какова задача реализованных в вашем компиляторе концептов.

В этом же тексте мы пытаемся вручную "средствами пользователя С++" эмулировать "системные свойства С++", такие как интерфейсы времени компиляции, те свойства которых нет в языке С++, для того чтобы типизировать описания классов и параметры шаблонов. Рассматриваются интересы в вопросах типизации, возможности использовать библиотеку std для таких системных вещей языка, повторного использования и дизайна кода и т.п.
0
hoggy
6857 / 3058 / 524
Регистрация: 15.11.2014
Сообщений: 6,938
Завершенные тесты: 1
10.08.2016, 22:44 #4
Цитата Сообщение от ct0r Посмотреть сообщение
я не понял - в чем преимущества перед концептами?
я вообще не понял поток сознания автора.
можете сказать: чего ему нужно?
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2016, 22:44
Привет! Вот еще темы с ответами:

На Простом СИ!!! - C++
Народ нужна помощь очень сильно надо решить вот такую задачку буду очень благодарен кто поможет... выслать задачку можно на почту...

Ошибка в простом коде - C++
Не пойму в чем ошибка, условие правильно, цикл думал тоже, но все время один и тот же ответ. Кто может дайте совет #include &quot;stdio.h&quot; ...

Найти ошибку в простом уравнении - C++
Вот задача s=\frac{2cos\,\left(x-\frac{2}{3} \right)}{\frac{1}{2}+sin^2 y}\left(1+\frac{z^2}{3-\frac{z^2}{5}} \right)\\ ...

Управление потоками на простом примере - C++
Покажите на простом примере как это делается. Создаю простую программу, которая выводит на экран таймер на 30 сек. По истечению...


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

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

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