Pocoを使用して実装されたHTTPサーバーをテストするためのラッパーを作成しようとしています。サーバーはHTTPRequestHandlerのサブクラスを使用して実装され、handleRequestメソッドが実装されています。 handleRequestメソッドは、2つの引数HTTPServerRequestとHTTPServerResponseを取ります。Poco HTTPServerのhandleRequestをテストするためのラッパーはコンパイルされません。
handleRequest(HTTPServerRequest& request, HTTPServerResponse& response)
これらは両方とも抽象クラスです。私のラッパーでは、handleRequestメソッドを直接呼び出す必要があります。このような何か:
req_handler->handleRequest(&req, &res);
私はHTTPServerRequestの親クラス、HTTPRequestのから継承されたread()メソッドを使用している要求を移入したい方法です。このように:
HTTPServerRequest req = new HTTPServerRequest();
char* buffer //populate this from std::cin
std::istringstream iss(buffer);
try {
req->read(iss);
}
しかし、問題は、彼らは抽象クラスなので、私は直接HTTPServerRequest/HTTPServerResponseのための「新しい」と呼ぶ傾けることです。私はHTTPServerRequestImplを使用しようとしましたが、純粋な仮想関数が実装されておらず、HTTPServerRequestImplにも空のコンストラクタがないというコンパイルエラーが発生します。私はこれを試しました:
HTTPServerRequest req = new HTTPServerRequestImpl()
これも期待どおりのコンパイラエラーです。そのようなラッパーを書く正しい方法は何ですか? Pocoにサーバーを書くとき、どうやって理想的なのですか? ?私はちょうど、stdinから移入された要求でhandleRequestを呼び出す最小限のラッパーを必要とします。