У меня есть унаследованный класс, чье жизненное время управляется подсчетом ссылок (точнее, это результат ACE_Event_Handler).Как использовать shared_ptr и пользовательский подсчет ссылок одновременно?
Я хочу, чтобы иметь возможность управлять им с помощью std :: shared_ptr в моем коде, но все равно сохранить старый счетчик ссылок устаревшего (объекты класса должны быть доступны сторонней библиотекой, которая не принимает shared_ptr - ACE, если быть точным).
Объект должен быть удален, когда счетчик ссылок падает до 0, и все экземпляры shared_ptr, управляющие им, будут уничтожены.
У меня есть только одна идея: сохраните экземпляр shared_ptr, указывающий на объект, пока счетчик ссылок не упадет до 0, а затем сбросит его. Каким-то образом это ощущение грязности. Есть ли способ лучше?
Почему бы не написать умный указатель, который обрабатывает увеличение и уменьшение количества ссылок ACE и использование этого? Это достаточно легко. –
Я хотел бы использовать std :: shared_ptr. – Gbr
Что-то вроде ['boost :: intrusive_ptr'] (http://www.boost.org/doc/libs/1_63_0/libs/smart_ptr/intrusive_ptr.html) выглядит лучше, чем' std :: shared_ptr'. Если boost не является опцией, то ваш собственный «instrusive_ptr» -подобный класс, вероятно, является вашим единственным вариантом. –