C++ 将唯一函数作为参数传递

C++ 将唯一函数作为参数传递,c++,function,parameters,parameter-passing,C++,Function,Parameters,Parameter Passing,我有一个类,它被实例化为: Param::Param(std::function func) 它只是将一个内部方法设置为等于传入的方法。我所困惑的是,如何真正地称之为: newparam(std::function{return4.0;}) 我不想定义要传入的函数,我可以为此传入一个唯一的函数吗?您需要的是匿名函数声明。此功能仅为C++11提供。如果您使用的是g++使用$g++-std=g++0x my_file.cpp编译 #include <functional> #includ

我有一个类,它被实例化为:

Param::Param(std::function func)

它只是将一个内部方法设置为等于传入的方法。我所困惑的是,如何真正地称之为:

newparam(std::function{return4.0;})


我不想定义要传入的函数,我可以为此传入一个唯一的函数吗?

您需要的是匿名函数声明。此功能仅为C++11提供。如果您使用的是
g++
使用
$g++-std=g++0x my_file.cpp编译

#include <functional>
#include <vector>
#include <iostream>

int call_me(std::function <int(int)> func, int arg = 1)
{
  return func(arg);
}

int main(int argc, char ** argv)
{

  std::cout << "Default arg: " << call_me([](int v){return v*2;}) << std::endl;
  std::cout << "Passing 5: " << call_me([](int v){return v*2;}, 5) << std::endl;

  return 0;
}

什么是“唯一函数”?我不知道如何调用它,基本上javascript等价物是:
new Param(function(){return 4.0;})。只是一个没有在任何地方定义的函数。仅供参考,它通常被称为匿名函数或lambda函数或(在许多情况下技术上是错误的,但仍然很常见)闭包。
std::function
可以从lambda初始化,所以可以传入lambda。
[](int v){return v*2;}