C++有效的函数指针为null
C++ Valid function pointer is null
我基本上有一个类,它在构造函数中使用函数指针,然后将其存储在一个变量中,以便在类上调用函数时使用,如下所示:
class foo{
public:
foo( void(*a)() = 0 ): func(a){}
void call(){ if(func) func(); }
private:
void(*func)(); };
当我创建一个具有已在包含的标头中正向声明的函数的实例时,就会出现问题。通过调试,我发现指针func有时为null,而传递的函数是有效的,导致它无法执行。
我正在将CodeBlocks与MinGW一起使用。
就像这样:
函数.h
void test();
函数.cpp
#include "function.h"
void test(){
std::cout << "Hello World" << std::endl;}
main.cpp
#include "function.h"
int main(){
foo a(test);
a.call();
return 0;}
还有一件事:它并不总是错误地发生,所以我认为这与优化或类似的事情有关。
我遗漏了一些事情,因为它们不重要,因为foo实例是用new创建的,添加到std::vector中,并在call()函数结束时删除自己。析构函数确保它也从std::向量中删除。这一切都发生在另一个cpp文件中,该文件还包括函数.h
已解决
从类的外观来看,似乎永远不想用null函数指针构造"foo"。如果函数指针为null,您是否考虑过在构造函数中引发异常?这样做可以帮助您确定代码中使用空指针构造"foo"的位置。
相关文章:
- 当使用通配符和null指针调用函数时,对输出的说明
- 当目标指针不是基类的类型时,为什么允许dynamic_cast为多态类生成 null 指针?
- 将位数组转换为 HBITMAP 后 bmBits 的 NULL 指针
- 在访问类的树层次结构中的对象时避免使用 null 指针
- 排序时引用绑定到 'value_type' 类型的 null 指针
- NULL指针解决方案中的C 分割故障
- 取消引用会导致崩溃,即使对于非 NULL 指针也是如此,原因也是如此
- 跟进哈希表 C++,this->next = NULL 指针
- C++中的NULL指针
- 当删除NULL指针(C/C )时,可以保证SegFault
- 引用绑定到类型 'struct value_type' 的 null 指针
- 尝试在C++中使用 NULL 指针时不会发生分段错误
- if(NULL==指针)和if(指针==NULL)之间有什么区别
- 在Linux/GCC下,将NULL指针访问转换为C++异常
- NULL指针检查线程安全
- cppcheck null指针取消引用:m_buffer-否则,针对null进行检查是多余的
- strtok() - 为什么必须传递 NULL 指针才能获取字符串中的下一个标记
- Null指针异常(int Vs char)
- 用户定义类中的Null指针无效
- 不是NULL指针,而是错误的访问错误消息