【发布时间】:2020-06-30 16:41:17
【问题描述】:
使用 c++11 我想创建一个使用 lambda 作为计算一部分的类。
//contrived sample of potential usage
void random_class::some_function(void)
{
auto an_object = new my_custom_object(5, [this](){ return random_class_member * 5; });
an_object.do_some_processing();
random_class_member++;
an_object.do_some_processing();
}
我不太确定如何声明和定义 my_custom_object。
class my_custom_object
{
public:
template <typename Proc>
my_custom_object(int a, Proc p)
{
privatea = a;
privatep = p;
}
void do_some_processing()
{
privatea += privatep();
}
private:
int privatea;
Proc privatep;
}
未知类型名称'Proc'
【问题讨论】:
-
它们之间没有关系
-
您可能需要查看
std::function来存储 lambda。 -
你需要
template整个类,而不仅仅是构造函数 -
如果整个类都是模板化的,我将如何使用带有 lambda 的 my_custom_object? random_class::some_function 会是什么样子?
-
为什么是
privatea = a?为什么不this.a = a?或my_custom_object(int a, std::function<int(void)> p) : a(a), p(p) {}