如果我有这个类

class TextBox : public Widget {
public:
    void addKeyPressHandler(std::function<void (std::string)>);
private:
    std::function<void (std::string)> keyPressHandler;
};

我如何知道是否已设置keyPressHandler?我可以将其初始化为NULL,然后对此进行测试吗?

最佳答案

std::function 允许您通过operator bool()来测试它是否持有可调用目标。

例如:

if (keyPressHandler)
{
    keyPressHandler(someString);
}
else
    // TODO: Consider queuing events here if you don't want to miss keystrokes.
}

...仅在具有有效目标的情况下才调用该函数。表示自初始化以来已为其分配了函数指针或任何其他可调用的指针。

关于c++ - 函数包装器初始化在C++ 11中如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13885151/

10-11 20:42