指向函数的c++指针导致段错误



我遇到了一点麻烦。我似乎不明白为什么我的main函数不能调用intFunction所指向的函数而没有seg错误。

同样,这是我用于测试目的的代码。我对c++还是个新手。

谢谢你的帮助。

#include <iostream>
int tester(int* input){
    std::cout << "nn" << *input << "nn";
}
int (*intFunction)(int*);
template<typename FT>
int passFunction(int type, FT function){
    if(type == 1){
        function = tester;
        //Direct call...
        tester(&type);
        int type2 = 3;
        //Works from here...
        function(&type2);
    }
    return 0;
}
int main(int argc, char* argv[]){
    passFunction(1,intFunction);
    int alert = 3;
    //But not from here...
    intFunction(&alert);
    return 0;
}

当传递函数指针作为参数时,它们与其他变量没有任何不同,因为你传递的是值的副本(即它当时的函数地址)。

如果你想在另一个函数中分配一个变量,你必须通过引用传递它,或者作为指向原始变量的指针传递它。

通过引用

:

int passFunction(int type, FT& function)

或指针

int passFunction(int type, FT* ppfunction)
{
    if(type == 1)
    {
        *ppfunction = tester;
        //Direct call...
        tester(&type);
        int type2 = 3;
        //Works from here...
        (*ppfunction)(&type2);
    }
    return 0;
}
// which then requires you pass the address of your variable when
// calling `passFunction`
passFunction(1, &intFunction);

相关内容

  • 没有找到相关文章

最新更新