所以我有一个发出网络请求的功能:
void MyClass::makeRequest()
{
ApiRequest* apiRequest = new ApiRequest();
apiRequest->makeRequest();
connect(apiRequest, &ApiRequest::requestFinished, this, &MyClass:onApiRequestFinished);
}
由于我需要对象apiRequest
才能生存直到我的请求完成,因此我调用:
void MyClass:onApiRequestFinished()
{
// do my stuff
// now I can delete my request object ((retrieved using sender()) using deleteLater()
}
现在,由于在这种情况下我没有使用Qt父子系统,如何使用C ++ 11智能指针而不是调用deleteLater()
来管理内存?
答案 0 :(得分:0)
我认为您不能使用C ++智能指针来解决这个问题,除非在触发apiRequest
之前将requestFinished
对象存储在某个容器中。
也许替代方法是创建一个ApiRequest::finished()
方法用作信号的receiver
,然后将this
传递给ApiRequest
的构造函数,这样{{1 }}可以呼叫finished()
,然后在MyClass::onApiRequestFinished()
退出后让finished()
呼叫delete this
,例如:
onApiRequestFinished()
不确定Qt的可行性如何,但值得一试。