我有很多项目的解决方案 我想在接收数组和函数指针的公共项目中创建一个类 此类是该解决方案的其他项目的成员。每个项目类都可以将其作为成员保存。
在常见的类的构造函数中,如何传递函数的指针?我如何在公共类中设置一个成员,该成员保存我想稍后调用的函数的位置?
我的目标是我可以使用指针调用函数 - 而在我在公共项目中找到的类的代码中。
由于
答案 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