MFC C ++指向新手功能的指针

时间:2012-11-26 13:52:53

标签: c++ pointers mfc

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

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

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

由于

1 个答案:

答案 0 :(得分:2)

  

在常见的类的构造函数中,我如何通过   指针的功能?我如何在公共区域内设置成员   包含我想要调用的函数位置的类   以后呢?

typedef void(*FUNCPTR)(int);

这定义了我的函数指针类型,但它也将函数限制为下面的签名(retuens 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 uses