Бессмысленный параметр c полиморфизм в c ++ - PullRequest
0 голосов
/ 01 мая 2020

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

Одним из способов решения этой проблемы является использование варианта, который позволяет значению принадлежать любому из подклассов, и отправить в соответствии с holds_alternative. Интересно, есть ли лучший способ? (Временное решение требует, чтобы все подклассы были перечислены в качестве аргументов шаблона для типа варианта, и требуется шаблон, который выполняет диспетчеризацию. Одна хорошая вещь в традиционном подклассе состоит в том, что не нужно указывать все подклассы в одном месте.)

Этот вопрос напоминает полиморфизм : вызов переопределенных функций без указателей . Для тех, кто быстро скажет мне, что нет, с ++ этого не делает, пожалуйста, переосмыслите вопрос так: «Возможно ли, что в будущем появится версия с ++? Было ли какое-либо обсуждение этой функции?»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...