私はある種のスマートポインタ技術に取り組んでいますが、欠けている部分が1つあります。いくつかの組み合わせを試しましたが、ロジックは次のとおりです。
UInt *obj = new UInt;
UInt *ref;
ref = obj;
delete obj;
obj = NULL;
if (ref == NULL)
{
// It works
}
else
{
// It failed
}
refを明示的にNULLに設定せずに「ItWorks」を押す方法はありますか?
編集:
より適切なシナリオは、次のようなものです。
class A
{
public:
A(): ref(NULL) {}
~A()
{
if (ref != NULL)
delete ref;
}
int *ref;
};
int *obj = new int;
A *host = new A();
host->ref = obj; ???
delete obj;
obj = NULL;
if (host->ref == NULL)
{
// It works.
}
else
{
// It failed.
}
..。
ただし、クラスメンバーとしてint *&refを使用することはできません。