【问题标题】:std::tr1::function - store function objects of various types in common containerstd::tr1::function - 将各种类型的函数对象存储在公共容器中
【发布时间】:2012-03-02 14:11:24
【问题描述】:

我正在将我的仿函数实现转换为std::tr1::function(原因是在我的实现中,我们需要为每个函数类型预定义类型和仿函数类,我想扩展它以使用任何函数)。

我有

int param = 1;
std::tr1::bind (&MyClass::func, param);

我想把它添加到一些通用容器中

someContainer.insert (std::tr1::bind (&MyClass::func, param));

那么,如何声明容器,它必须是什么类型才能接受任何类型的函数?有可能吗?

第二个问题——如何调用容器中的函数,像这样:

someContainer.begin().invoke();

附:也许还有另一种解决方案,我对这个话题还不够了解。非常感谢您的回答。

我处理的是 GNU C++98。

【问题讨论】:

    标签: c++ function std functor c++98


    【解决方案1】:

    如果“任何类型”是指所有具有相同签名的函数对象(函子),那么这很简单:

    std::vector< std::tr1::function<void()> >  someContainer;
    

    这将创建一个不带参数并返回 void 的任何函数对象的向量。

    要调用函数,只需像普通函数对象一样调用它:

    (*someContainer.begin()) ();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多