gpt4 book ai didi

C++ 有效函数指针为空

转载 作者:行者123 更新时间:2023-11-28 06:35:47 27 4
gpt4 key购买 nike

我基本上有一个类在其构造函数中采用函数指针,然后将其存储在一个变量中,以便在类上调用函数时使用,如下所示:

class foo{
public:
foo( void(*a)() = 0 ): func(a){}
void call(){ if(func) func(); }
private:
void(*func)(); };

当我使用已在包含的 header 中向前声明的函数创建实例时,会出现问题。通过调试发现有时指针func为null,而传递的函数是有效的,导致不执行。

我在 MinGW 中使用 CodeBlocks。

像这样:

函数.h

void test();

函数.cpp

#include "function.h"

void test(){
std::cout << "Hello World" << std::endl;}

主要.cpp

#include "function.h"

int main(){
foo a(test);
a.call();
return 0;}

还有一件事:它并不总是错误地发生,所以我认为这与优化或类似的事情有关。

我遗漏了一些因为它们无关紧要的事情是 foo 实例是用 new 创建的,添加到 std::vector 并在 call() 函数的末尾删除自身。析构函数确保它也从 std::vector 中删除。这一切都发生在另一个包含 function.h 的 cpp 文件中

已解决

最佳答案

从类的外观来看,您似乎永远不想构造带有空函数指针的“foo”。如果函数指针为空,您是否考虑过在构造函数中抛出异常?这样做可以帮助您确定代码中使用空指针构造“foo”的位置。

关于C++ 有效函数指针为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26810587/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com