代码之家  ›  专栏  ›  技术社区  ›  Timothy Baldridge

在Qt之外实现隐式共享类

  •  4
  • Timothy Baldridge  · 技术社区  · 14 年前

    我熟悉Qt使用D指针管理数据的方式。如何在代码中执行此操作?

    我试过这个方法:

    1) 将所有数据移到结构中 2) 向结构中添加QAtomicInt 3) 实现a=operator并将我的构造函数/解构器更改为检查引用计数。

    问题是,当我去做对象的浅层副本时,我得到一个关于QObject声明为private的错误。那我该怎么做呢?

    下面是我的复印员的一个例子:

    HttpRequest & HttpRequest::operator=(const HttpRequest &other)
    {
        other.d->ref.ref();
        if (!d->ref.deref())
            delete d;
        d = other.d;
        return *this;
    }
    

    我是不是走错了路?

    1 回复  |  直到 14 年前
        1
  •  0
  •   shoosh    14 年前

    AFAIK QObjects不是用来复制的。这就是为什么QObject有一个private operator=所以问题是,为什么要声明一个,如果要声明,那么您的对象indeed需要是一个QObject吗?