从QNetworkReply获取自定义QNetworkRequest对象

时间:2015-03-18 17:21:10

标签: qt inheritance qnetworkrequest qnetworkreply

这是我的代码:

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

UserInfoRequest派生自另一个类:

class APIRequest : public QNetworkRequest

所以问题是:我能以某种方式将QNetworkRequest返回的QNetworkReply::request()对象转换为APIRequest类吗?如果不可能,那么传递我的自定义请求对象的最佳方法是什么 之前列出的代码来回复处理程序槽。

1 个答案:

答案 0 :(得分:1)

将基类分配给派生类不是一个好主意。这是因为APIRequest包含属于QNetworkReply的所有内容,但QNetworkReply不包含APIRequest的一些额外功能。因此,当您将QNetworkReply分配给APIRequest时,会使用QNetworkReply的分配运算符,而APIRequest的其他数据仍保持不变。

如果您真的想要这样做,您应该有一个赋值运算符,如:

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

您在其中复制QNetworkReply的成员,并以某种方式处理派生类型APIRequest中的额外信息。然后,您可以直接将QNetworkReply::request()分配给APIRequest的对象。