Я использую URL-адреса для HTTP-запросов по всей реализации класса:
QNetworkRequest m_request;
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/details"));
request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/sli"));
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/sli/preview"));
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/sli/send"));
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/sli/download"));
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/advanced-sli"));
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/profiles/" + ip + ":" + port));
m_request.setUrl(QUrl("http://" + m_IP + ":" + m_Port + "/terminate"));
Как мне организовать все мои URL-адреса в одном месте для удобства и простоты доступа?
Один из вариантов - использовать static const
, как это, поверх исходного файла реализации класса:
static const QUrl url1 = QUrl("http://" + m_IP + ":" + m_Port + "/details");
static const QUrl url2 = QUrl("http://" + m_IP + ":" + m_Port + "/terminate");
static const QUrl url3 = QUrl("http://" + m_IP + ":" + m_Port + "/advanced-sli");
// ...
m_request.setUrl(url1);
m_request.setUrl(url2);
m_request.setUrl(url3);
// ...
Но проблема в том, что я не могу получить доступ к членам m_IP
и m_Port
внутри моего static const
определения.
ОБНОВЛЕНИЕ: решение
Наконец, я реализовал это поверх реализации класса:
static const QString routeDetails = "http://%1:%2/details" ;
static const QString routeSli = "http://%1:%2/sli" ;
static const QString routeSliPreview = "http://%1:%2/sli/preview" ;
static const QString routeSliSend = "http://%1:%2/sli/send" ;
static const QString routeSliDownload = "http://%1:%2/sli/download" ;
static const QString routeAdvancedSli = "http://%1:%2/advanced-sli" ;
static const QString routeProfiles = "http://%1:%2/profiles/%3:%4" ;
static const QString routeTerminate = "http://%1:%2/terminate" ;
И на протяжении всей реализации у меня есть такие утверждения:
m_request.setUrl(QUrl(routeDetails.arg(m_IP).arg(m_Port)));
request.setUrl(QUrl(routeSli.arg(m_IP).arg(m_Port)));
m_request.setUrl(QUrl(routeSliPreview.arg(m_IP).arg(m_Port)));
m_request.setUrl(QUrl(routeSliSend.arg(m_IP).arg(m_Port)));
m_request.setUrl(QUrl(routeSliDownload.arg(m_IP).arg(m_Port)));
m_request.setUrl(QUrl(routeAdvancedSli.arg(m_IP).arg(m_Port)));
m_request.setUrl(QUrl(routeProfiles.arg(m_IP).arg(m_Port).arg(ip).arg(port)));
m_request.setUrl(QUrl(routeTerminate.arg(m_IP).arg(m_Port)));