C ++使用具有任意参数的任意类的回调

时间:2015-03-31 19:27:31

标签: c++ callback

我想实现一个具有函数的类,该函数能够从调用该函数的对象回调方法,而不需要有关它的信息。

想象一下,我们想要从Game回调类Library的某些方法:

void Game::display(string a) {
    cout << a << endl;
}

int Game::sum(int a, int b) {
    return a + b;
}

void Game::start() {
    lib = new Library();
    lib->doSomething(/* somehow pass information about the functions*/);
}

然后:

void Library::doSomething(list_of_callbacks L /*or something like this*/) {
    L[0]("hi");  //L[0] is Game::display
    L[1](2,3);   //L[1] is Game::sum
}

它不仅需要与Game一起工作,还需要与任何课程一起工作。我们想要回调的方法可能需要访问对象的属性(因此不一定是静态的)。

我对C++有点新鲜;我现在几个小时都在搜索这个主题,但在大多数情况下,返回类型或所有回调方法的参数都是相同的。我尝试过使用模板和std::function / std::bind,但未成功。

谢谢,对不起,如果我没有说清楚,那是我在这里的第一篇文章。

编辑:

doSomething函数将由外部工具生成(翻译),该工具包含有关函数列表的信息(例如,L [0]中的函数采用这些参数或其他参数等)

如果我提出的问题无法在C ++中完成,那么<​​em> 任何 以其他方式实现相同的目标是不是 能够从来电者那里获取信息吗?

0 个答案:

没有答案