2015-03-18 2 views
1

Вот код, который я получил:Получить заказ QNetworkRequest объект из QNetworkReply

UserInfoRequest request(token); 
QNetworkReply* reply = network->sendCustomRequest(request, request.getVerb()); 

Где UserInfoRequest происходит из другого класса:

class APIRequest : public QNetworkRequest 

Таким образом, вопрос: могу ли я каким-то образом бросить QNetworkRequest объект, который был отправлен QNetworkReply::request() в мой класс APIRequest? Если это невозможно, то каков наилучший способ передать мой пользовательский объект запроса из , указанный выше, чтобы ответить слову обработчика.

ответ

1

Это нецелесообразно назначать базовый класс производному. Это потому, что у APIRequest есть все, что принадлежит QNetworkReply, но QNetworkReply не содержит дополнительных функций APIRequest. Поэтому, когда вы назначаете QNetworkReply на APIRequest, используется оператор присваивания QNetworkReply, а остальные дополнительные данные APIRequest остаются нетронутыми.

В случае, если вы действительно хотите хотите сделать это, вы должны иметь оператор присваивания, как:

class APIRequest : public QNetworkReply 
{ 
    APIRequest& operator= (const QNetworkReply& reply) 
    { 
     ... 
    } 
} 

В которой вы копируете члены QNetworkReply и как-то справиться с дополнительной информацией в производном типе APIRequest. Затем вы можете напрямую назначить QNetworkReply::request() объекту APIRequest.

 Смежные вопросы

  • Нет связанных вопросов^_^