![]() |
|
Модераторы: bsa |
![]()
|
|
| vamp0x00 |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
Допустим у меня есть такая простая иерархия
можно ли как то создать STLный list с объектами этих классов ???
если нет то как еще можно хранить разные объекты в одном списке? |
||||
|
|||||
| azesmcar |
|
||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
Да, храни указатель на базовый класс. А еще лучше умный указатель.
|
||||
|
|||||
| vamp0x00 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
первый раз вижу boost
а и как поступать с выводом списка в таком случае?(
|
|||
|
||||
| azesmcar |
|
||||||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
вот тут boost - это не часть C++, но часть boost-а скоро ею станет. В общем если отдельно не качал и не ставил, то его у тебя просто нет. Если компилятор из последних (gcc 4.5 или VS2010) то он уже частично поддерживает новый стандарт, и умные указатели там есть. Т.е. можно вот так
и boost::shared_ptr заменить на std::shared_ptr.
это кстати в любом случае неверно, должно быть
ну и если нет, то можно хранить простой указатель, но тогда придется удалять вручную. П.С. Я бы рекомендовал поставить boost. http://www.boost.org Это сообщение отредактировал(а) azesmcar - 7.10.2010, 15:25 |
||||||
|
|||||||
| vamp0x00 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
я поставил boost и получил ошибки
vamp@0x00:~$ g++-3.3 2.cpp 2.cpp: In function `int main()': 2.cpp:80: error: no matching function for call to `make_shared(const char[6], const char[2], const char[3])' 2.cpp:81: error: no matching function for call to `make_shared(const char[6], const char[2], const char[3], const char[2], const char[2])' 2.cpp:82: error: conversion from ` std::_List_iterator<boost::shared_ptr<Person>, boost::shared_ptr<Person>&, boost::shared_ptr<Person>*>' to non-scalar type `std::_List_iterator<Person, Person&, Person*>' requested |
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
|
|||
|
||||
| vamp0x00 |
|
||||||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
пишет 2.cpp:5:33: error: boost/make_shared.hpp: No such file or directory
g++ 2.cpp 2.cpp: In function 'int main()': 2.cpp:76: error: 'make_shared' is not a member of 'boost' 2.cpp:76: error: expected primary-expression before '>' token 2.cpp:77: error: 'make_shared' is not a member of 'boost' 2.cpp:77: error: expected primary-expression before '>' token |
||||||
|
|||||||
| vamp0x00 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 28.1.2010 Репутация: нет Всего: нет |
сделал через
|
|||
|
||||
| azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 52 Всего: 211 |
||||
|
||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |