一个很好的特殊值可以是默认构造的boost::function
。
空的function
在布尔上下文(如NULL指针)中计算false,或者您可以使用empty()
方法来测试函数对象包装器是否实际包含函数。请参阅boost::function Tutorial。
下面是一个代码示例:
#include <boost/function.hpp>
#include <iostream>
typedef boost::function<void (int code)> t_err_callback;
void do_callback(int code)
{
std::cout << "Error " << code << std::endl;
}
void my_func(int a, int b, t_err_callback err_callback=t_err_callback())
{
bool error = true; // An error happened
int error_code = 15; // Error code
if (error && !err_callback.empty())
err_callback(error_code);
}
int main()
{
my_func(0, 0);
my_func(0, 0, do_callback);
}
完美,没想到它会是容易的,谢谢! – 2010-02-25 22:47:43