我熟悉Qt使用D指针管理数据的方式。我如何在我的代码中执行此操作?
我试过这个方法:
1)将所有数据移动到结构中 2)在结构中添加QAtomicInt 3)实现a =运算符并更改我的构造函数/解构函数以检查引用计数。
问题是,当我去做一个浅物体的副本时,我得到一个关于QObject声明=私有的错误。我怎么做到这一点?
以下是我的复制操作符的示例:
HttpRequest & HttpRequest::operator=(const HttpRequest &other)
{
other.d->ref.ref();
if (!d->ref.deref())
delete d;
d = other.d;
return *this;
}
我是以错误的方式解决这个问题吗?
答案 0 :(得分:0)
AFAIK QObjects并不打算复制。这就是为什么QObject有一个私有操作符=所以问题是,为什么要声明一个,如果你这样做,你的对象是否需要是一个QObject?