我有一个用以下实例化的类:
Param::Param(std::function<float()> func)
只是设置一个等于传入方法的内部方法。我感到困惑的是如何实际调用类似的东西:
new Param(std::function<float()>{ return 4.0; });
我不想要定义要传入的函数,我可以为此传递一个独特的函数吗?
答案 0 :(得分: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;}