传递唯一函数作为参数

Passing a unique function as a parameter

本文关键字:参数 函数 唯一      更新时间:2023-10-16

我有一个实例化的类:

Param::Param(std::function<float()> func)

将一个内部方法设置为传入的方法。我所困惑的是如何调用这样的东西:

new Param(std::function<float()>{ return 4.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;
}

在call_me()声明中,我们说第一个参数是一个接收一个整数并返回一个整数的函数。然后声明一个名为arg的默认整型实参。

然后我们调用call_me(),传递一个匿名函数,该函数接收一个整数并将其乘以2返回,我们不传递参数。然后我们重复,但传递5作为匿名函数的参数。

[](int v){return v*2;}