Как заставить std::array различать родителя и наследника?
Допустим, имеется класс Example и наследник ExampleDerived. Каким образом при помещении их обоих в std::array добиться вызова у наследника именно его версий методов, а не родительских? Это можно сделать только ручным кастом? Или же танцы с virtual?
rsatarov , что ты понимаешь под танцами с virtual? Что ты понимаешь под при помещении их обоих в std::array?
От какого типа у тебя инстанциирован std::array?
Что-то я видимо не до конца пойму вопроса. +1 какие танцы? Можешь ведь использовать банальную схему полиморфизма. И когда ты создаешь обьекты типа Родитель = нью Наследник. И вызываешь функции от обьекта на индексе "х", то вызовиться функция именно у обьекта "наследника".
Танцы с virtual. Для того они и придуманы.
Тут еще вопрос в том как именно вы помещаете объекты в std::array и какие именно это объекты. В вашем случае вам нужно помещать в массив либо ссылки, либо указатели (умные), иначе рискуете словить проблемы.
Codebaker , ясно.
Миксин прилеплен ради галочки. Возможно ради того, чтобы запутать/испугать читателя кода. :)
По сути у тебя тут двойная трата ресурса времени и непонятная абстракция. Зачем? (вопрос риторический)
На деле миксин к решению вопроса никакого отношения не имеет, т.к. вопрос явно склоняет к полиморфизму и виртуальности. Но даже догадка о полиморфизме не может быть обоснованной, т.к. автор вопроса вообще ничего об используемых в коде типах не сообщил.