如果我有这个类
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/