Re[2]: Удаление из контейнера внешеполиморфных объектов
От: Аноним 955  
Дата: 25.09.09 19:24
Оценка:
Здравствуйте, Кодт, Вы писали:

А>>Через внешний полиморфизм в контейнер помещаются объекты разных типов. Необходимо обеспечить возможность удаления из контейнера, зная исходный объект. Пока единственное, что смог придумать — использовать void *. Нет ли элегантного решения?


К>Что-то в твоём коде не видно void*.


Эта часть кода закомментирована:

//    virtual bool is_equal(void *pure_) = 0;


//    virtual bool is_equal(void *pure_)
//    {
//        return (_pure == pure_);
//    }


Проблема в том, как без void * найти элемент контейнера (для последующего удаления), соответствующий, например p1.

К>А так, в принципе, нормальное решение.


А мне вот void * спать спокойно не даёт

К>Единственный момент — это как организовывать интерфейс

К>- на абстрактном базовом классе и шаблонном наследнике (твой подход)
К>- на таблицах функций в каждом экземпляре
К>- — рукодельных
К>- — стандартных

Реальные методы, которые я упростил до foo1() и foo2(), имеют в качестве аргументов итераторы, т.е. шаблонные, поэтому мой вариант предпочтительнее.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.