我正在研究这段代码并想了解它是如何工作的。(刚刚写了足够的代码来提出我的问题。)
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)> ,还是无关紧要?