gpt4 book ai didi

c++ - Lambda 表达式作为类属性?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:15:30 26 4
gpt4 key购买 nike

是否可以使用 lambda 表达式作为类属性?我正在用 C++ 开发一个小游戏,其中所有机器人都有相同的更新例程,但每个人都应该有自己的可选额外更新例程。

我是这么想的

class Bot
{
private:
Lambdatype lambda;

public:
Bot(Lambda l) {lambda = l;}
update() { dosomething(); lambda(); }
};

最佳答案

您可以使用 std::function ,例如假设它是 void 函数并获得两个 int:

class Bot
{
private:
using Lambda = std::function<void(int, int) >;
Lambda lambda;

public:

Bot(const Lambda &l) : lambda(l)
{
}

void update()
{
//dosomething...;
lambda(1, 2);
}
};

int main()
{
Bot bot ([](int x, int y){ cout << x+y << endl; });

bot.update();
}

更通用:

template <typename L>
class Bot
{
private:
L lambda;

public:

Bot(const L &l) : lambda(l)
{
}

void update()
{
//dosomething...;
lambda(1, 2);
}
};

int main()
{
Bot<std::function<void(int,int)>> bot (
[](int x, int y){ cout << x+y << endl; }
);
bot.update();
}

基于模板:

template <typename L>
struct Bot
{
private:
L lambda;

public:
Bot(const L &l) : lambda{l} {}
void update() { lambda(1,2); }
};

int main()
{
auto l = [](int x, int y){ std::cout << x + y << std::endl; };

Bot<decltype(l)> bot(l);

bot.update();
}

关于c++ - Lambda 表达式作为类属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19040481/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com