| 分類:[.NET 全般]
早速Boostで躓いてしまいましたorz
引用元:http://www.kmonos.net/alang/boost/classes/intrusive_ptr.html
#include <vector> #include <iostream> #include <boost/intrusive_ptr.hpp> using namespace std; using namespace boost::intrusive_ptr;
class SharedObject { public: SharedObject() : ref_count(1) {} int AddRef() { return ++ref_count; } int Release() { if( 0 == --ref_count ) delete this; return ref_count; } void Hello() { cout << "hello." << endl; } private: int ref_count; };
void intrusive_ptr_add_ref( CountableObject* ptr ) { ptr->AddRef(); }
void intrusive_ptr_release( CountedObject* ptr ) { ptr->Release(); }
int main() { typedef boost::intrusive_ptr<SharedObject> Ptr;
Ptr p = Ptr(new SharedObject,false); vector< Ptr > v; // vectorに入れたり。
v.push_back( Ptr(new SharedObject,false) ); v.push_back( Ptr(new SharedObject,false) ); v.push_back( Ptr(new SharedObject,false) ); v.push_back( p );
p->Hello(); // pはさっき他にコピーしたけれど、まだここからも参照可能。
return 0; } // ここで全てdeleteされる。
上記のサンプルコードをコンパイルしようとすると・・・ error C2065: 'CountedObject' : 定義されていない識別子です。
とエラーが出てしまいます。
このCountedObjectなるものを探しましたがどうしても判りませんでした。 Boostに詳しいしい人、お手数ですがこの型について教えて下さい。 よろしくお願い足します。 |