在Qt之外实现隐式共享类

时间:2010-04-12 20:39:26

标签: c++ qt qt4

我熟悉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;
}

我是以错误的方式解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

AFAIK QObjects并不打算复制。这就是为什么QObject有一个私有操作符=所以问题是,为什么要声明一个,如果你这样做,你的对象是否需要是一个QObject?