将Void作为指针传递到类中,然后执行其内容

时间:2011-09-14 19:29:04

标签: c++ function pointers arguments void

如何将函数作为参数传递然后执行它。我正在尝试做这样的事情:

class Foo{
private:
    void (*external);
public:
    Foo(void (*function)()){ *external = *function; }
    ~Foo(){ }
    bool Execute(){ 
        *external(); // Somehow execute 'external' which does the same thing with 'function' 
        return true
    }
};

void pFnc(){
printf("test");
}


int main(){
 Foo foo = Foo(&pFnc);
 foo.Execute();
 return 0;
}

当然这不起作用。

3 个答案:

答案 0 :(得分:2)

你很亲密。

class Foo
{
public:
    typedef void(*FN)(void);
    Foo(FN fn) : fn_(fn) {};
    bool Execute()
    {
        fn_();
        return true;
    }
    FN fn_;
};

void pFunc(){
    printf("test");
}

int main()
{
    Foo foo(&pFunc);
    foo.Execute();
}

答案 1 :(得分:2)

尝试:

    void (*external)();

您的原始声明是指向void的指针,而不是指向返回void的函数的指针。

答案 2 :(得分:1)

设置
external = function;

并执行

external();

此外,必须将external声明为函数指针void (*external)()。否则,你必须在函数和空指针之间进行转换。