如何禁止函数指针参数的NULL值

时间:2018-02-04 21:19:15

标签: c++

我有一个功能:

void foo(int parm11, pointer to function) {...}

我想禁止用第二个参数的NULL值来调用它。换句话说,我想从以下C ++源代码行的编译器中获取错误消息:

foo(5, NULL);

1 个答案:

答案 0 :(得分:10)

你可以捕获一个显式的nullptr(以及任何可转换为空指针常量的东西),因为它有自己的类型:

void foo(int, pfunc_type); // Your function
void foo(int, std::nullptr_t) = delete; // The "bad" overload

当然,确定的用户仍然可以传递一个空函数指针,他们只是不能直接为参数指定一个空指针常量。

最好重新考虑指针,并将函数引用作为AlexD recommended