>**更新添加了主和猫
大家好,我正在创建一个具有引用计数器的共享指针类。
我试图做的是当我创建一个新对象并赋予它价值时,我可以这样做,直到我达到 3 的上限。
如果我再创建对象,如果我尝试使用 obj.getPointer(),它们将获得 NULL。
目前,当我尝试创建对象时,当我控制台记录我的主要:(时,我会0x22bd730
如果要限制为 3 个引用,则在达到限制后,复制构造函数和赋值应正确操作,如下所示:
sharedPTR(const sharedPTR<T>& ref) : myData(nullptr), myRef(nullptr)
{
if (ref.myRef && ref.myRef->getCount() < 3) {
myData = ref.myData;
myRef = ref.myRef;
myRef->AddRef();
}
}
sharedPTR<T>& operator = (const sharedPTR<T>& ref)
{
if (this == &ref) {
return *this;
}
if (myRef && myRef->Release() == 0)
{
delete myData;
delete myRef;
}
myData = nullptr;
myRef = nullptr;
if (ref.myRef && ref.myRef->getCount() < 3) {
myData = ref.myData;
myRef = ref.myRef;
myRef->AddRef();
}
return *this;
}
演示