2

我有这样的事情:

boost::function<void(void)> redStyle = boost::bind(colorStyle, "red");

boost::function<void(void)> blueBlinkingStyle = boost::bind(animatedStyle, "blue", BLINKING);

这是定义 nullStyler 的正确方法吗:

void nothing(){}
boost::function<void(void)> noStyle = boost::bind(nothing);

我在想我可以这样做,但是空函数抛出:

boost::function<void(void)> noStyle;

使用 styler 函数的代码可以检查空,而不是使用“空对象模式”。哪个更好?在我的 Detail 命名空间中有一个奇怪的无功能或检查是否为空?

4

1 回答 1

3

我希望有一个无操作功能。它使意图清晰,并且使您免于检查函子是否为空(假设您不必出于其他原因进行检查)。

请注意,您不需要调用 bind。你可以这样做:

boost::function<void(void)> noStyle = nothing;

例子:

#include <boost/function.hpp>
#include <iostream>

void hello()
{
  std::cout << "hello" << std::endl;
}

int main()
{
  boost::function<void(void)> f = hello;
  f();
}
于 2013-10-09T09:23:56.923 回答