小编Chr*_*y78的帖子

std::function<void()> 接受参数

我正在研究这段代码并想了解它是如何工作的。(刚刚写了足够的代码来提出我的问题。)

class AppWindow
{
    enum InitializeWebViewFlags
    {
        kDefaultOption = 0,
        kUseInstalledBrowser = 1 << 0,
    };
    void InitializeWebView(InitializeWebViewFlags webviewInitFlags);
    void RunAsync(std::function<void(void)> callback);
    ...
};

void AppWindow::RunAsync(std::function<void()> callback)
{
    auto* task = new std::function<void()>(callback);
    PostMessage(m_mainWindow, s_runAsyncWindowMessage, reinterpret_cast<WPARAM>(task), 0);
}

AppWindow::AppWindow()
{
    ...
    RunAsync([this] { InitializeWebView(kDefaultOption); });
}

...  /* msg handler */ 
case s_runAsyncWindowMessage:
{
    auto* task = reinterpret_cast<std::function<void()>*>(wParam);
    (*task)();
     delete task;
     return true;
}
Run Code Online (Sandbox Code Playgroud)

为什么/如何将枚举值传递给 InitilizeWebView() ?即使 std::function 被声明为 std::function< void > ,没有参数,它会保留并传递参数值吗?这仅发生在一个参数上?(没有尝试更多,但正在传递一个参数,我检查过)。在这种情况下,正确的声明不是 std::function< void(InitializeWebViewFlags)> 或 std::function< void(int)> ,还是无关紧要?

c++ winapi

0
推荐指数
1
解决办法
95
查看次数

标签 统计

c++ ×1

winapi ×1