Реализация неявно разделяемых классов вне Qt - PullRequest
4 голосов
/ 13 апреля 2010

Я знаком с тем, как Qt использует D-указатели для управления данными. Как мне сделать это в моем коде?

Я попробовал этот метод:

1) переместить все данные в структуру 2) добавить QAtomicInt в структуру 3) реализовать оператор = и изменить мой конструктор / деконструктор на проверку количества ссылок.

Проблема в том, что когда я делаю поверхностную копию объекта, я получаю ошибку о том, что QObject объявляет = private. Как же мне это сделать?

Вот пример моего оператора копирования:

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

Я поступаю неправильно?

1 Ответ

0 голосов
/ 13 апреля 2010

AFAIK QObjects не предназначены для копирования. Вот почему у QObject есть закрытый оператор =, поэтому вопрос в том, почему вы хотите объявить его, и если да, то должен ли ваш объект indeds быть QObject?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...