我熟悉Qt使用D指针管理数据的方式。我该如何在我的代码中实现这一点?
我尝试了以下方法:
1)将所有数据移动到一个结构体中 2)向结构体添加QAtomicInt 3)实现一个=运算符,并更改我的构造函数/析构函数以检查引用计数。
问题是,当我尝试浅复制对象时,我会收到关于QObject声明=为私有的错误。那么我该如何完成这个操作呢?
以下是我的复制运算符示例:
我尝试了以下方法:
1)将所有数据移动到一个结构体中 2)向结构体添加QAtomicInt 3)实现一个=运算符,并更改我的构造函数/析构函数以检查引用计数。
问题是,当我尝试浅复制对象时,我会收到关于QObject声明=为私有的错误。那么我该如何完成这个操作呢?
以下是我的复制运算符示例:
HttpRequest & HttpRequest::operator=(const HttpRequest &other)
{
other.d->ref.ref();
if (!d->ref.deref())
delete d;
d = other.d;
return *this;
}
我这样做是错的吗?