![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
sol78 |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
pitayusь realizovatь pattern "Copy on Write"
no ne poluchaetsya , v func replace(char old_ch , char new_ch), poidee nuzhno count_ptr sbrasivat' na 0, ne znayu kak pravil'no eto sdelat'??? P.S. zhal' chto Translit ne rabotaet |
||||
|
|||||
zkv |
|
||||
![]() ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2133 Регистрация: 23.7.2006 Где: Санкт-Петербург Репутация: 26 Всего: 92 |
недостаточно просто сбросить счетчик в новом объекте, нужно еще уменьшить его во всех других строках, использующих этот участок памяти. с учетом этого, думаю лучше держать в объектах указатель на счетчик:
при выделении памяти на объект выделять память под счетчик, и устанавливать его в 0. при копировании инкрементировать его, при модификации объекта сначала проверять есть ли ссылающиеся объекты, если нет - то просто модифицировать, если есть, то сначала декрементировать текущий счетчик, затем выделить память под новый, установить в ноль, скопировать буфер, теперь можно модифицировать. понятно изложил? |
||||
|
|||||
sol78 |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 366 Регистрация: 7.7.2007 Репутация: 1 Всего: 0 |
aga ukazatel' na chetchik....ok poprobuyu...
|
|||
|
||||
bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
имхо, лучше делать это так:
|
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
если нет возможности писать в русской раскладке, то пользуйся галочкой "транслит" слева |
|||
|
||||
nickless |
|
|||
![]() Гентозавр ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2976 Регистрация: 29.8.2005 Где: Germany Репутация: 19 Всего: 181 |
![]()
Она к сожалению в данный момент не работает, но это скоро пофиксят. -------------------- ![]() Real men don't use backups, they post their stuff on a public ftp server and let the rest of the world make copies - Linus Torvalds |
|||
|
||||
baldina |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3433 Регистрация: 5.12.2007 Где: Москва Репутация: 32 Всего: 101 |
bsa,
+1
Еще чуть и заодно получим pattern pimpl |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |