EDIT: Я работаю с C++.Самый элегантный способ получить этот полиморфизм Проблема
Итак, я создаю методы/функции для проверки пересечения между фигурами. Я по существу есть это:
class Shape {};
class Rectangle : public Shape {};
class Circle : public Shape {};
class Line : public Shape {};
Теперь, мне нужно решить, как наилучшим образом, чтобы написать фактические методы/функции для проверки пересечения. Но все мои формы будут сохранены в списке Shape указателей, так что я буду называть метод/функцию базовой формы:
bool intersects (Shape* a, Shape* b);
В тот момент, мне нужно, чтобы определить, какие типы «а» форм и 'b', поэтому я могу правильно обнаруживать столкновения. Я могу легко сделать один из них, просто используя некоторые виртуальные методы:
Это было бы определить одну из форм («а» теперь «это»). Тем не менее, мне все равно нужно будет получить тип «b». Очевидное решение состоит в том, чтобы дать Shape переменной 'id', чтобы классифицировать, какую форму она есть, а затем «переключать» через эти, а затем использовать dynamic_cast. Тем не менее, это не очень элегантно, и кажется, что для этого нужно больше возможностей OO.
Любые предложения?
Это классическая проблема, которая решается двойной отправкой. – Mankarse
Хотя мои первоначальные поиски никогда не появлялись с двойной отправкой, я вижу, как он решает мою проблему. Благодарю. EDIT: Я бы проголосовал за это, но я не уверен, что у меня недостаточно репутации, или я просто не могу найти кнопку для голосования. –