Здравствуйте, Аноним 955, Вы писали:
К>>Что-то в твоём коде не видно void*.
А9>Эта часть кода закомментирована:
А9>А9>// virtual bool is_equal(void *pure_)
А9>// {
А9>// return (_pure == pure_);
А9>// }
А9>
То есть, сравниваешь адреса, но не содержимое?
Тогда не вижу никакой проблемы. Ну разве что с множественным наследованием нужно быть аккуратным.
А9>Проблема в том, как без void * найти элемент контейнера (для последующего удаления), соответствующий, например p1.
А9>Реальные методы, которые я упростил до foo1() и foo2(), имеют в качестве аргументов итераторы, т.е. шаблонные, поэтому мой вариант предпочтительнее.
Нужно было с самого начала сказать, что у тебя мультиметод (полиморфный по двум аргументам — элементу контейнера и искомому значению).
Понятно, что во время исполнения шаблоны уже не помогут. Значит, нужно смотреть, как ту же самую задачу решать без шаблонов. Способов много — хоть двойная диспетчеризация, хоть вообще вариантные типы (boost::any). Но это уже надо на суть методов fooNNN смотреть.