1

我有很多项目的解决方案。
我想在公共项目中创建一个接收数组和函数指针的类。
此类是该解决方案上其他项目的成员。每个项目类都可以将其作为成员。

在 common 里面的类的构造函数上,我如何传递函数的指针?如何在公共类中设置一个成员,该成员保存我稍后要调用的函数的位置?

我的目标是我可以使用指针调用该函数 - 而我在公共项目中找到的类的代码中..

谢谢

4

1 回答 1

2

在 common 里面的类的构造函数上,我如何传递函数的指针?如何在公共类中设置一个成员,该成员保存我稍后要调用的函数的位置?

typedef void(*FUNCPTR)(int);

这定义了我的函数指针类型,但它也将函数限制为下面的签名(返回 void 并采用 1 个 int 参数),您需要为函数签名定义它。

void myFunction( int someParam )
{
    //DoSomething with someParam
}


class Foo
{
private:
    FUNCPTR mFunction; //Holds pointer

public:
    Foo( FUNCPTR function) : mFunction(function) {} //Initialise instance

    void callFunc() {mFunction(1);} //call function
};

int main(unsigned int argc, const char** argv)
{
    Foo myFoo(myFunction);

    myFoo.callFunc();
}

在 C++ 中,您可能会更好,但是考虑使用函数对象,在其中创建对象并定义一个operator()接受正确参数和返回类型的函数对象,但可以让您获得对象和多态性的所有灵活性......

请参阅C++ Functors - and their use 以获得一些讨论和细节

于 2012-11-26T14:12:33.477 回答