我们需要的是一个具有 2 个方法 add() 和 call() 的类。当我们创建一个类时,我们可以使用 add() 函数添加一个我们希望在调用 call() 时调用的函数,如(伪代码)
new A;
new B;
A.add(B.function(int)) // B takes int as an argument
A.call(); // and call() would look like {int i; sendArrayOfSubscribers(i);}
//now we know that B.function was executed with param generated in A;
这样的结构在 C++ 中可能吗?
最佳答案
您的代码非常不清楚,但您似乎想要设置一系列任务然后执行所有任务。
您可以使用 boost::function 来创建每个函数,并且您可以拥有它们的集合( vector )。
然后调用每个函数。像这样的东西:
typedef boost::function< void (void) > func_type;
std::vector< func_type > funcs;
// populate funcs,
std::for_each( funcs.begin(), funcs.end(), boost::bind(&func_type::operator(),_1) );
应该可以。 (可能有更简单的构造)
您使用更多的 boost::binds 来创建您的集合“函数”。这些函数不必不带任何参数,它们可以像您需要的那样带“int”。你在绑定(bind)时传递它,例如:
funcs.push_back( boost::bind( &B::function, b, i ) );
其中“b”是 b 的实例,i 是它作为 int 接受的参数。
关于c++ - 如何使一个类能够调用其他类函数的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4711686/