【发布时间】:2021-09-08 14:51:27
【问题描述】:
我有课
class MyClass
{
typedef std::function<void(const std::string &str> SomeFunc;
SomeFunc Func;
}
我想为这个功能设置。我做了一个
void MyClass::SetFunc(SomeFunc Func1)
{
Func = Func1;
}
我需要在我的类函数中作为成员并且我想使用 std::function,因为它允许使用 lambda。如果 lambda 很复杂,我需要移动函数。如果 lambda 是简单的,一个副本会很好。我不知道该怎么做
【问题讨论】:
-
移动指针是副本。这个问题比较不清楚。你真的想要
SoemFunc Func;成为会员吗? -
如果你不想移动,你为什么打电话给
move?Func = Func1;怎么了? -
听起来你混淆了函数指针和
std::function。只需在您当前使用SomeFunc*的任何地方使用SomeFunc,它应该会容易得多。 -
编辑后我看不到代码的问题。 “我怎么能移动?我需要2套:复制和移动。”你的意思是你需要重载
SetFunc,一个是复制的,一个是移动的?您是否尝试编写第二个重载?我不会太在意移动和复制std::function虽然 -
是的,我的意思是这个问题@463035818_is_not_a_number