Добрый день.
Была поставлена задача заменить такой класс:
template < class T, class ThreadingModel = ::Loki::ObjectLevelLockable<T> >
class RefCounted : public ThreadingModel {
public:
RefCounted() : m_refCount(0) {}
protected:
~RefCounted() {} // Note non-virtual
public:
void ref() const;
void unref() const;
int getRefCount() const;
private:
RefCounted(const ClassType&);
void operator=(const ClassType&);
};
чем-нибудь из boost'а.
Сам класс используется так:
class MyClass : public RefCounted<MyClass> {
public:
MyClass();
~MyClass();
public:
...
};
Насколько я понимаю, для этой цели более всего подходит shared_ptr<MyClass>.
Но, возможно, есть более простой в реализации вариант замены — при использовании shared_ptr нужно будет везде менять отношение наследования на отношение использования.