C 使用多个lambdas/绑定以引用相同的功能
c++ Using multiple lambdas/binds to reference the same function/functionality
我正在为课程编写一些测试。我有多个测试,每个测试都创建了自己的MyObj
。但是,MyObj
接收std::function<bool<T>>
,并且每次创建MyObj
时,我都不想创建具有相同功能的lambda函数。因此,而不是拥有它:
TEST1()
{
MyObj<double> myobj([&](double time) -> bool
{
time = myobj.doSomething();
// ... more functionality
});
}
TEST2()
{
MyObj<double> myobj([&](double time) -> bool
{
time = myobj.doSomething();
// ... more functionality
});
}
...
相反,我想每次创建一个新的MyObj
:
bool myFunc(double time)
{
time myobj.doSomething();
// ... more functionality
}
TEST1()
{
MyObj<double> myobj([&myFunc]()); // Something like this
}
TEST2()
{
MyObj<double> myobj(std::bind(&myFunc, myobj, std::placeholders::_1)); // Or something like this
}
所以有些事情要注意:
-
MyObj
类,所有复制/参考构造函数均已删除。 - 有更多与MyFunc相关的功能,这就是为什么我不想每次重复一次,因为有很多测试用例。
- 我需要对实际功能中创建的
MyObj
的引用。
任何帮助将不胜感激。谢谢。
您可以创建常规函数:
struct Functor
{
MyObj<double>& myobj;
explicit Functor(MyObj<double>& myobj) : myobj(myobj) {};
auto operator ()(double time) const -> bool
{
time = myobj.doSomething();
// ... more functionality
}
};
使用:
TEST1()
{
MyObj<double> myobj(Functor(myobj));
// ...
}
相关文章:
- Qt中来自不同功能的按钮引用
- 引用 using 声明引入的功能的句子是什么意思?
- 警告#13212:引用需要堆栈对齐功能的EBX
- 我的模板功能具有通用引用不起作用
- C 使用多个lambdas/绑定以引用相同的功能
- FFMPEG关于多个功能的未定义引用
- 有没有办法在我的通用功能路由器设计中支持"常量引用"作为功能签名参数?
- 对我的功能的未定义引用
- 为什么功能程序的规律性允许按值传递和按常量引用传递?
- 未定义的引用指针的变量模板在clang中功能,而不是GCC
- IFDEF块内部对功能的未定义引用
- 对完整模板专业类成员功能的未定义引用,但不是部分专业化
- 对函数的未定义引用,该功能是另一个类的成员
- 呼叫功能的值,该功能通过引用C 中的指针
- 可以接受未知签名的可变功能引用的类
- 必须调用对非静态功能的引用
- C 通过引用DLL中的功能传递std ::字符串
- 为什么BOOST.RANGE RANGE_BEGIN/END FREE功能对const和非const引用都重载
- 模板功能:混合逐个复制传递和按引用传递
- 使用mingw对魔鬼功能的未定义引用