![]() |
|
|
![]()
|
|
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
ну так вы уже который день обсуждаете именно реализацию мультиметодов на конкретном примере
нет тут простых путей. просто и красиво только в самом конце, типа calc(нагрузка, левая опора, правая опора), когда конкретная функция расчета вызывается по конкретным типам нагрузки и опор. и ресурсов таких подробных (русских), увы, нет. реализуется обычно либо при помощи dynamic_cast или visitor универсальных решений тоже нет. я привел ссылку на интересную, на мой взгляд, реализацию |
|||
|
||||
| Нитонисе |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 917 Регистрация: 5.11.2009 Репутация: 2 Всего: 2 |
Вроде бы их мы не обсуждали. Я уже понял, что простых путей нет, но правильно ли я понимаю, что мультиметод имеет смысл использовать в случае если некая функция работает с двумя и более объектами, которые в сигнатуре функции объявлены как указатели на базовый класс? |
|||
|
||||
| baldina |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 1 Всего: 101 |
у mes спросите)))) необходимо, но не достаточно. мультиметод реализует полиморфизм, основанный на типах более одного аргумента функции. конечно, не каждой функции с несколькими базовыми классами в аргументах это требуется вообще мультиметод это то, чего в С++ нет (и хотя уже лет 7-8 обсуждаются возможные технические и синтаксические пути ввода их в язык, непохоже, что в обозримом будущем они появятся). а раз нет, то можно говорить не об использовании, а моделировании похожего поведения. |
|||
|
||||
| mes |
|
|||
|
любитель ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7954 Регистрация: 14.1.2006 Репутация: 6 Всего: 250 |
их. точнее упрощенный частный случай, где в качестве одного из типов выступает id.. Добавлено через 3 минуты и 17 секунд т.е. если классический мултиметод имеет условную сигнатуру void mm (virtual a&, virtual b&, virtual b& ); // 3х мерный случай то наша функция имеет void mm (virtual load&, size_t s1, size_t s2 ); // где s1 и s2 условно ассоциированные с типом идентификаторы.. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |