我有一个功能:
void foo(int parm11, pointer to function) {...}
Run Code Online (Sandbox Code Playgroud)
我想禁止用NULL第二个参数的值来调用它.换句话说,我想从以下C++源代码行的编译器获取错误消息:
foo(5, NULL);
Run Code Online (Sandbox Code Playgroud)
Sto*_*ica 10
你可以捕获一个显式的nullptr(以及任何可转换为空指针常量的东西),因为它有自己的类型:
void foo(int, pfunc_type); // Your function
void foo(int, std::nullptr_t) = delete; // The "bad" overload
Run Code Online (Sandbox Code Playgroud)
当然,确定的用户仍然可以传递空函数指针,他们只是不能通过直接为参数指定空指针常量来完成它.
可能最好重新考虑指针,并且只需要像AlexD推荐的那样使用函数引用.