Мне нужен счетчик ссылок для объекта, не выделенного в куче.C++: счетчик ссылок для объектов
мне нужно реализовать механизм RAII на объектах, которые не могут быть легко скопированы и разрушенными:
class File
{
private:
int fd;
public:
File(const std::string &path) ... // opening file
destroy(); // actually closing file
File(const File &f) ... // just copying the fd
~File(); // doing nothing
}
Для сценария, как это std::shared_ptr
обычно используются: конструктор и деструктор объекта, указатель является общим только один раз.
В моем случае, однако, я бы предпочел избежать выделения объекта в куче. Мне нужен класс shared_object
, который выполняет задание, подобное std::shared_ptr
, так что мой класс 'non-copy-constructor и destroy
(в приведенном выше примере) вызываются только один раз.
Есть ли что-нибудь подобное?
@NiklasB. деструктор должен выполнить некоторый подсчет ссылок. 'shared_ptr' уже имеет всю встроенную логику. –
@R. Martinho: Спасибо, только осознал это тоже. Второй взгляд на код никогда не повредит (: –
Где вы планируете поддерживать счетчик ссылок, если не в куче? –