任何类的c ++函数对象/指针

时间:2018-07-12 20:21:36

标签: c++ lambda

我正在处理一段核心代码,其中一个函数将存储在一个对象中,然后在需要时稍后调用。到目前为止,我已经使用函数指针构建了它的初稿:

class caller {
int (*f)();
caller(int (*function)()){
f = function;
}
void timeIsRight(){
f();
}

caller(otherFunction);

这适用于从代码的其他区域调用函数,但是我希望能够处理将对象成员传递给调用者I.E:

caller(object.aFunction);

尽管我的编译器在抱怨以上内容,这使我相信自己正在犯错(我尝试了几种其他方法来编写以上内容,但无济于事。

我尝试将调用者移动到对象类中:

class object{
...
int myMember(){...}
caller(myMember);
...
}

尽管我收到错误int(namespace::object::*)() is incompatible with int(*)(),但这告诉我我需要告诉调用者函数的来源。

现在,理想情况下,我希望调用者能够接受任何返回int并且不带参数的函数,无论该函数位于何处(命名空间,类ect)

从到目前为止的阅读情况来看,我可能要走的两条路线是:

  • 创建模板
  • 使用成员指针

如果满足我的需求,我也愿意从函数指针切换到函数对象或lamda。

以上任何一种方法都能使我得到想要的结果,如果可以的话,我将非常适合向正确的方向推进,因为我发现我的搜索范围很广,而没有帮助的深度。

谢谢。

请注意,我遵循类/命名空间不可知方法,这是我的主要设计约束。如果使用函数指针无法实现这些目标,那么我很乐意转向对象,更不用说构建其他东西了。

但是,由于我在编译时不知道该类,所以链接的答案对解决我的问题没有帮助。

0 个答案:

没有答案