我试图在 C++ 类中包装我使用猫鼬(一个 C 库)编写的服务器。问题是我试图将函数传递ev_handler
给mg_create_server()
在 mongoose 中创建服务器实例的 . 但它给出了一个我相信的铸造错误:
src/Server.cpp:16:44: error: cannot convert 'Server::ev_handler' from
type 'int (Server::)(mg_connection*, mg_event)' to type 'mg_handler_t
{aka int (*)(mg_connection*, mg_event)}' server =
mg_create_server(NULL, ev_handler);
我试图制作ev_handler
静态,但它send_index_page(conn)
必须在包装类中。
void Server::start() {
struct mg_server *server;
int numberOfObjects;
_application = new Application();
_application->start();
// Create and configure the server
server = mg_create_server(NULL, ev_handler);
//... more code here ...
}
int Server::ev_handler(struct mg_connection *conn, enum mg_event ev) {
switch (ev) {
case MG_AUTH: return MG_TRUE;
case MG_REQUEST: return send_index_page(conn);
default: return MG_FALSE;
}
}