在DLL下使用, 會造成Count的值會提前移除, 原因是因為SmallObject
我不知道怎麼改, 所以我的作法就是改成我的 QSyncerRefCounted
其實我只是把RefCounted重寫一下並移除SmallObject 就好了
typedef Loki::SmartPtr
template
class QSyncerRefCounted
{
public:
QSyncerRefCounted()
: pCount_(new int)
{
assert(pCount_!=0);
*pCount_ = 1;
}
QSyncerRefCounted(const QSyncerRefCounted& rhs)
: pCount_(rhs.pCount_)
{}
// MWCW lacks template friends, hence the following kludge
template
QSyncerRefCounted(const QSyncerRefCounted
: pCount_(reinterpret_cast
{}
P Clone(const P& val)
{
++*pCount_;
return val;
}
bool Release(const P&)
{
if (!--*pCount_)
{
delete pCount_;
pCount_ = NULL;
return true;
}
return false;
}
void Swap(QSyncerRefCounted& rhs)
{ std::swap(pCount_, rhs.pCount_); }
enum { destructiveCopy = false };
private:
// Data
int* pCount_;
};
沒有留言:
張貼留言