![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
fear |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
Нужен умный указатель, который бы освобождал память, занимаемую связанным с ним объектом, в том случае, если объект больше не используется (на объект не указывает ни один указатель). При этом умный указатель должен вести себя как и безумный стандартный, например, должна быть возможность динамически связать его как с объектом базового класса, так и с производным от базового. Boost пользовать в проекте только из-за одного класса не хочется.
В итоге, получился такой код. Но как то хочется его допилить и сделать более элегантным, есть идеи? ![]()
|
|||
|
||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
Лучше не выдумывай велосипеды а подключи boost, проблем с таким smartPointer-ом потом не оберешься. Аппетит приходит во время еды, подключишь boost и сразу появятся другие функции, которые понадобяться. Там много полезного.
Просто пару замечаний, которые сразу попались на глаза, не вдавался в подробности 1. Зачем нужно наследование?
2. Где функция для НЕ константного указателя? Так выходит что можно вызывать только константные функции класса. 3. Что возвращяет функция в случае else? Ничего, что будет? Неясно. 4. mutable какой-то явно тут не нужный... в общем хочешь хороший smart pointer - используй boost, ну или скопируй оттуда в крайнем случае. Это сообщение отредактировал(а) azesmcar - 24.2.2010, 21:14 |
|||
|
||||
fear |
|
||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
чтобы могли сделать так: SmartPointer<ObjectA> a = b; если есть альтернативное решение, привести один класс умного указателя к другому (для случая, когда упровляемые объекты наследуются один от другого), оч интересно послушать
они обязательно появяться в рабочем варианте, счас постарался разгрузить код чтобы лучше читался
Это интересный вопрос ![]()
можно и без него Это сообщение отредактировал(а) fear - 24.2.2010, 21:27 |
||||||||
|
|||||||||
azesmcar |
|
|||
![]() uploading... ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 6291 Регистрация: 12.11.2004 Где: Армения Репутация: 81 Всего: 211 |
fear
Честно говоря сейчас лень смотреть, я по вечерам ленивый..если не будет ответов утром с работы подробно прокомментирую. |
|||
|
||||
fear |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
участие в обсуждении темы по желанию, любое мнение ценно ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
установи нормальный компилятор, тогда буст тягать не придется. т.к. все уже встроено. и смарт поинтеры в том числе. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
fear |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
это что за компиляторы такие, в которых все встроено? ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
gcc-4.4.3 и выше. а gcc-4.4.5 уже и лямбда поддерживает. и extern template.
Добавлено через 1 минуту и 4 секунды под вендавз это mingw32 зовется. Добавлено через 2 минуты и 1 секунду а вообще тут все описано: http://gcc.gnu.org/gcc-4.5/cxx0x_status.html -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
fear |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
лямбда функции это хорошо, а вот умных указателей я не увидел, можно примерчик? да и сыровата версия 4.4.3 пока еще, не говоря уже о 4.4.5.
спасибо конечно, но виндовс мне не нада, упоси ![]() Это сообщение отредактировал(а) fear - 24.2.2010, 23:42 |
||||
|
|||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
это релиз ![]() упс, опечатался. gcc-4.5.0. да, сыровата. но тесты все проходит. все что я этой версией компилил, работает без глюков.
Добавлено через 2 минуты и 28 секунд тогда не понятно в чем проблема? смарт поинтеры появились начиная с версии 4.4.0 -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
fear |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
ага, но свежий очень
я что-то и не заметил, над посматреть
лень проблема ![]() ![]() Это сообщение отредактировал(а) fear - 25.2.2010, 00:17 |
||||||
|
|||||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
да, у них с этим туго. я недели две назад пытался 4.4.2 установить. дня два бился. не сумел :( да только эта и есть. остальные версии нужно с сорцов ставить. но там сложностей не возникает. -------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
fear |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 171 Регистрация: 16.4.2006 Репутация: 1 Всего: 1 |
сложности появяться когда пересобирать все будешь под новую версию ![]() |
|||
|
||||
andrew_121 |
|
|||
![]() Кодофей ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3448 Регистрация: 3.1.2008 Репутация: 6 Всего: 33 |
никаких сложностей. разве что варнингов больше. ибо проверка типов более строгая. самый стандартный варнинг:
-------------------- Удалил аккаунт. Прощайте! |
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
fear, имей в виду, что andrew_121 говорит про фичи, которые будут в БУДУЩЕМ стандарте С++, но которые поддерживаются GCC в экспериментальном режиме (нужно указывать специальный ключ).
Пока стандарт не принят, лучше использовать старый добрый boost. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |