C++のスマポがだめな気がしてきた
C++のauto_ptrやboost::shared_ptr、weak_ptrなどは、同じポインタから作られたスマポを、同一のものとして認識できるのであろうか?
なんでこんなことを考えたかといいますと、thisポインタに取って代わるものが無いんじゃないかと感じたので。
(出来ない場合、ってかできないよなぁ・・)回避方法としては、生成時にHogePtr(new Hoge());ってやんないで、newをオーバロードするなり、コンストラクタにHogePtrへの参照を引数として持たせて、コンストラクタ内で自分自身へのshared_ptrとweak_ptrを生成して、weak_ptrを保存する(shared_ptrを持つと、いつまでたっても消えなくなるため)ということが考えられるけど。
this使わなければいいじゃんって意見もあるけど、一つのクラスのパラメータに関してはそのクラス内だけで完結させたい。
追記:
やっぱだめっぽい。普通に考えたらだめだとおもうが。
#include
#include
using namespace std;
void main()
{
typedef boost::shared_ptrIntPtr;
listl,l2; int *pi = new int();
l.push_back(IntPtr(pi));
l2.push_back(IntPtr(pi));list
::iterator it; it = l.begin();
while(it != l.end())
{
it = l.erase(it);
}it = l2.begin();
while(it != l2.end())
{
it = l2.erase(it);
}
}