Qtライブラリを使用する次のコードを使用してhtmlページを読み込もうとしています
#include <QtWidgets/QApplication>
#include <QtNetwork/QNetworkRequest>
#include <QtNetwork/QNetworkReply>
#include <QtNetwork/QNetworkAccessManager>
#include <QtCore/QString>
#include <iostream>
class SillyRequest : public QNetworkAccessManager
{
Q_OBJECT
public:
SillyRequest();
QString getData();
public slots:
void replyFinished(QNetworkReply *);
private:
QString collectedData;
};
QString SillyRequest :: getData()
{
return collectedData;
}
SillyRequest :: SillyRequest()
{
connect(this, SIGNAL(finished(QNetworkReply*)), this, SLOT(replyFinished(QNetworkReply*)));
}
void SillyRequest :: replyFinished(QNetworkReply *reply)
{
collectedData = reply->readAll();
}
int main(int argc, char **argv)
{
QApplication app(argc, argv);
SillyRequest *network = new SillyRequest;
QNetworkRequest request;
request.setUrl(QUrl("http://qt.nokia.com"));
request.setRawHeader("User-Agent", "MyOwnBrowser 1.0");
QNetworkReply *reply = network->get(request);
std :: cout << network->getData().toStdString() << std :: endl;
return app.exec();
}
コンパイル時に次のエラーが発生します。私が正しい方法で何をしていないのかわかりません。
testing.cpp:(.text+0x73): undefined reference to `vtable for SillyRequest'
collect2: error: ld returned 1 exit status
Makefile:192: recipe for target 'network' failed
make: *** [network] Error 1
「replyFinished」スロットを実装するために、QNetworkAccessManager から継承しました。シグナル「終了」は、すでに「QNetworkAccessManager」の一部です。