没有任何参数的静态成员函数可以访问 class 的私有属性吗?

Can static member function without any argument access private attributes of a class?

我有以下(简体)ServerHandler.h 文件

#include <WebServer.h>

class ServerHandler
{
    public:
    ServerHandler();
    void createServer();
    static void handlePage();

    private:
    WebServer server;
};

和ServerHandler.cpp文件

#include "ServerHandler.h"

ServerHandler::ServerHandler() : server(80)
{}

void ServerHandler::createServer()
{
    // this code does not work
    server.on("/page", handlePage); 
    
    // lambda functions are proper to use
    server.on("/hey", [this]() {
        server.send(200, "text/plain", "Hello");
    });

    server.begin();
}

void ServerHandler::handlePage ()
{
    server.send(200, "text/plain", "This is a page");   
}

在WebServer.h中server.on()定义为:

typedef std::function<void(void)> THandlerFunction;
void on(const Uri &uri, THandlerFunction handler);

我只想编写一个免费的 function/static method/member 方法等用于称为 handlePage() 的长时间服务器操作。

问题是我不能使用像 pageHandler(Server s&) 这样的参数的静态函数,因为我不能在 server.on("/page", pageHandler(s));

中使用这个函数

此外,我不想在代码中使用 lambda 函数,因为我的目标是分离长操作。

简单来说,如何处理server.on("/page", ?);

感谢@hcheung,我了解到可以使用成员函数,我研究了如何做并找到了。

要求:

typedef std::function<void(void)> THandlerFunction;
void on(const Uri &uri, THandlerFunction handler);

要使用non-static成员函数需要使用绑定

mServer.on("/control_servo", std::bind(&ServerHandler::handlePage, this));