基本的に、ポインタ/アドレスセマンティクスとすぐに同等ではない特定のリソース(整数インデックスなど)を参照カウントする必要があります。基本的に、リソースを回して、カウントがゼロに達したときに特定のカスタム関数を呼び出す必要があります。また、リソースへの読み取り/書き込みアクセスの方法は、単純なポインターの参照解除操作ではなく、より複雑なものです。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
}