C++ to Objective-C Auto Ptr
Long time no hear… Useful auto ptr class for referencing Objective-C objects from C++. Especially useful when putting Objective-C objects into STL containers:
template<typename TClass> class NSPtr
{
public:
NSPtr() : _obj(NULL)
{}
NSPtr(TClass* o) : _obj(NULL)
{
this->operator=(o);
}
NSPtr(const NSPtr<TClass>& o) : _obj(NULL)
{
this->operator=(o);
}
~NSPtr()
{
this->operator=(NULL);
}
NSPtr& operator=(const NSPtr<TClass>& other)
{
this->operator=(*other);
return *this;
}
NSPtr & operator=(TClass* o)
{
if (o != _obj)
{
if (o != NULL)
{
[o retain];
}
if (_obj != NULL)
{
[_obj release];
}
_obj = o;
}
return *this;
}
TClass* operator*() const
{
return _obj;
}
TClass* operator->() const
{
return _obj;
}
private:
TClass* _obj;
};

