一個很好的特殊值可以是默認構造的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