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