Информация об изменениях

Сообщение Re[4]: Похоже, починил. от 20.12.2018 21:12

Изменено 20.12.2018 21:25 rg45

Re[4]: Похоже, починил.
Здравствуйте, Sheridan, Вы писали:

S>С каких пор инкапсуляция стала "умным указателем"? Подсчёт ссылок мне не нужен, потому что у меня указателей ровно один (на каждый нужный тип), и он либо указатель, либо nullptr


Просто инкапсуляция, конечно, нет. А вот для того, чтобы обеспечить совместное владение объектом ПРАВИЛЬНО, у тебя нет другого выхода, кроме как продублировать всю люгику работы умного указателя в каждом своем классе.

S>А урхопрограммеры даже не удосужились проверять на nullptr.


А как они могут проверить, что ты обнулил где-то там какой-то свой указатель? У них на этот же самый объект одновременно указывает еще дюжина других указателей. И удалить объект можно, только вместе с инвалидацией последнего указателя. И добиться этого можно, только через совместный подсчет ссылок.
Re[4]: Похоже, починил.
Здравствуйте, Sheridan, Вы писали:

S>С каких пор инкапсуляция стала "умным указателем"? Подсчёт ссылок мне не нужен, потому что у меня указателей ровно один (на каждый нужный тип), и он либо указатель, либо nullptr


Просто инкапсуляция, конечно, нет. А вот для того, чтобы обеспечить совместное владение объектом ПРАВИЛЬНО, у тебя нет другого выхода, кроме как продублировать всю люгику работы умного указателя в каждом своем классе.

S>А урхопрограммеры даже не удосужились проверять на nullptr.


А как они могут проверить, что ты обнулил где-то там какой-то свой указатель? У них на этот же самый объект одновременно указывает еще дюжина других указателей. И удалить объект можно, только вместе с инвалидацией последнего указателя. И добиться этого можно, только через совместный подсчет ссылок.

Но у тебя иная ситуация — ты создал объект и в какой-то момент передаешь его в библиотечную функцию (на отрисовку, например). Библиотека сразу же захватывает владение этим объектом при помощи умного указателя (увеличивает счетчит ссылок). А по окончании работы освобождает объект от владения, уменьшает счетчик ссылок и, при достиженни счетчиком нуля грохает объект. Ты ведь счетчик ссылок не нарастил, поэтому про твое владение объектом никто ничего не знает.