c++ - 如何使一个类能够调用其他类函数的数组?

标签 c++ oop boost

我们需要的是一个具有 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/

相关文章:

c++ - boost::thread_specific_ptr 相对于简单的 TlsGetValue 和 TlsSetValue 大幅减慢

c++ - 使用 tr2::direct_bases 获取结果的第 n 个元素

php - 静态/非静态方法问题

c++ - 为什么不使用 boost::tuple 的 .get 在 gcc 的模板函数中工作?

c++ - boost interprocess file_lock不适用于多个进程

对象的 Javascript oop 实例

c++ - 将类模板参数值之一指定为任意

c# - 多少空检查就足够了?

c++ - 根据使用的构造函数声明一个成员

java - 需要设计建议以跳过对象类型转换