Мне нужен счетчик ссылок для объекта, не выделенного в куче.
Мне нужен его для реализации механизма 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
, чтобы мой конструктор без копирования и функция destroy
(в приведенном выше примере) вызывались только один раз.
Существует ли что-нибудь подобное?