| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > map + абстрактный класс |
| Автор: Burka 1.6.2011, 16:04 | ||
| Здраствуйте, подскажите пожалуйста можно ли используя map из stl работать с абстрактными классами? Пример
Мне надо сделать массив Example'ов. Без повторов. Есть какой нибудь способ заставить работать map? или надо с вектором делать |
| Автор: Michrutka 1.6.2011, 16:06 | ||
Попробуй сделать так:
|
| Автор: xvr 1.6.2011, 16:36 |
| Ты не поверишь, но и с вектором это работать не будет! |
| Автор: boostcoder 1.6.2011, 16:41 | ||
или так:
|
| Автор: afiskon 1.6.2011, 16:42 |
| Только обязательно воспользуйтесь умными указателями (используйте shared_ptr/unique_ptr, ибо auto_ptr теперь деприкейтед). Не придется вручную вызывать delete и меньше шансов, что память потечет (практически нулевые, если явно не накосячить). |
| Автор: Burka 1.6.2011, 19:30 | ||||
а работать с этим так же как и с обычными ссылками? создавать через new и удалять через delete надо? ps. как я понял удаляться само будет, но создавать через new правильно?) |
| Автор: boostcoder 1.6.2011, 19:36 | ||
для удаления delete не нужен. просто выкидываешь элемент из контейнера, а смарт-поинтер сам все удаляет. |
| Автор: Burka 1.6.2011, 19:39 |
| Спасибо, попробую Добавлено через 3 минуты и 37 секунд а какой файл подключать? <boost/shared_ptr.hpp> не находит |
| Автор: boostcoder 1.6.2011, 19:48 |
значит у Вас boost не установлен. Добавлено через 40 секунд или, возможно нужно указать где лежат хидеры boost`а |
| Автор: afiskon 1.6.2011, 22:29 |
| Флаг "-std=c++0x" (или "-std=gnu++0x")для GCC или MinGW начиная с версии 4.5. В VS 2010 чуть ли не из коробки, безо всяких галочек (но не факт). Можно через IDE в свойствах проекта поискать соответствующую галочку или прописать вручную где-то в тех же свойствах. |