Здравствуйте, Erop, Вы писали:
E>Здравствуйте, creatman, Вы писали:
C>>Поправка: не у Саттера а у Майерса (Наиболее эффективное использование C++). Там как раз раскрывается тема коллизии динамических объектов в компьютерных играх. На сколько мне не изменяет память, Александресску ссылался в своих мульти методах на Майерса и от себя добавлю, что А привел более удачное решение проблемы.
E>Типа для выбора обработчика столконовения?
E>Что будет, если пуля типа 8 попадает в монстра типа 13?
E>В принципе я соглачен, что там мультиметоды могут быть уместны.
E>Правда у меня в анологичной задаче (правда не из области игрушек
) было не совсем так.
E>Было так, что есть пара типовых реакций. И есть ещё штуки три нетиповых.
E>Соответсвенно хорошо получается с двойной диспечеризацией, что довольно похоже на мультиметоды, в принципе, но и с if'ами в таком раскладе всё выгляди т не особо плохо.
Двойная диспетчеризация — есть способ реализации мультиметодов. Так же как switch-on-type есть способ реализации динамического полиморфизма.
Если есть 2 или более типов и код, который необходимо выполнить, зависит от этих типов, то это мультиметод. По определению. А как их реализовывать — это уже другой вопрос. С помощью if'ов, двойной диспетчеризации, шаблонных наворотов, или с помощью поддержки в языке.