По сути, мне нужно сделать подсчет ссылок на определенные ресурсы (например, на целочисленный индекс), которые не являются эквивалентами семантики указатель / адрес;в основном мне нужно обойти ресурс и вызвать определенную пользовательскую функцию, когда счетчик достигает нуля.Также доступ к ресурсу для чтения / записи - это не простая операция разыменования указателя, а нечто более сложное.Я не думаю, что boost :: shared_ptr будет соответствовать всем требованиям, но, может быть, я упускаю какой-то другой эквивалентный классу Boost, который я мог бы использовать?
пример того, что мне нужно сделать:
struct NonPointerResource
{
NonPointerResource(int a) : rec(a) {}
int rec;
}
int createResource ()
{
data BasicResource("get/resource");
boost::shared_resource< MonPointerResource > r( BasicResource.getId() ,
boost::function< BasicResource::RemoveId >() );
TypicalUsage( r );
}
//when r goes out of scope, it will call BasicResource::RemoveId( NonPointerResource& ) or something similar
int TypicalUsage( boost::shared_resource< NonPointerResource > r )
{
data* d = access_object( r );
// do something with d
}