【问题标题】:define a function use callable object as argument定义一个使用可调用对象作为参数的函数
【发布时间】:2016-06-01 01:12:55
【问题描述】:

感谢您检查我的问题。我需要一个模板函数来使用可调用对象(如 lambda、函数对象、绑定、函数指针和函数)作为参数,就像 STL 所做的那样,但我真的不知道该怎么做,而且网上没有资源.

具体来说,我想设计一个函数来遍历我的容器,并且对于每个元素,它将调用可调用函数来操作元素,就像 STL::for_each() 一样。你能举个这样的例子吗?

非常感谢!

【问题讨论】:

  • 增加获得帮助的机会。您应该尝试编写一个小示例来说明您正在尝试做的事情。

标签: c++ stl


【解决方案1】:

STL 使用模板来执行此操作。像这样的:

template<class CallableObjectType>
void do_stuff(/* other arguments */, CallableObjectType object)
{
    // ...
    object(arg1, arg2, arg3);
    // ...
}

也就是说,它不会试图强制你的对象是可调用的,除非通过调用它。如果对象不可调用,则无法实例化模板,因为object(arg1, arg2, arg3) 无效,因此会出现错误。如果对象是可调用的,那么它会按照您的预期工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-21
    • 2016-01-04
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2019-03-11
    • 2016-05-24
    相关资源
    最近更新 更多