TR1ちょっとやってみた@shared_ptrその1
といってもまだ shared_ptr だけですが。
#include
#include// for std::tr1::shared_ptr using namespace std::tr1;
class Hoge
{
int _val;
public:
Hoge(int val) : _val(val)
{
std::cout << "Created hoge[" << _val << "]." << std::endl;
}~Hoge()
{
std::cout << "Destroyed hoge[" << _val << "]." << std::endl;
}void Say()
{
std::cout << "Say hoge[" << _val << "]." << std::endl;
}
};
void SayHoge(shared_ptr
spHoge, int num)
{
if (num <= 0) return;
spHoge->Say();
SayHoge(spHoge, num - 1);
}
int main()
{
shared_ptrspHoge(new Hoge(0)); SayHoge(spHoge, 3);
std::cout << "--------" << std::endl;SayHoge(shared_ptr
(new Hoge(1)), 2);
}
Created hoge[0].
Say hoge[0].
Say hoge[0].
Say hoge[0].
-
-
-
-
-
-
- -
-
-
-
-
-
Created hoge[1].
Say hoge[1].
Say hoge[1].
Destroyed hoge[1].
Destroyed hoge[0].
をを!ちゃんと参照カウントしてますねぇ!
これでboost要らず!とまではまだ行かないですが。
いやーこれでいろんな問題がスマートに解決できそうだ。多分。
次は何を使ってみようかな?
TR1
http://ja.wikipedia.org/wiki/Technical_Report_1
Visual Studio 2008 Service Pack 1
http://www.microsoft.com/downloads/details.aspx?FamilyID=27673c47-b3b5-4c67-bd99-84e525b5ce61&DisplayLang=ja
Express Edition用
http://www.microsoft.com/downloads/details.aspx?FamilyID=3254c868-bcb9-412c-95c6-d100c872ec60&DisplayLang=ja