c++ 使用多个 lambdas/binds 来引用相同的 function/functionality

c++ Using multiple lambdas/binds to reference the same function/functionality

我正在为 class 编写一些测试。我有多个测试,每个测试都创建自己的 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
}

所以有些事情要注意:

感谢任何帮助。谢谢。

您可以创建常规函子:

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));
    // ...
}