C++ 11在公共函数中设置lambda

Nap*_*Jon 0 c++ lambda c++11

如何妥善解决这个问题?

 class House{
 public:
  void startAction();
  void init(){
      startAction = [] () {}; 
  }  
 };
Run Code Online (Sandbox Code Playgroud)

我试过这个,但据说"表达不可转让"

我想定义startAction的功能,但是在init方法中.

我这样做是因为我想捕获的init方法中有几个变量传递给startAction.

mol*_*ilo 6

您无法为成员函数指定值.

你可以有一个成员函数调用的成员变量,如下所示:

class House{
 public:
  void startAction() { m_action(); }
  void init(){
      m_action = [] () {}; 
  }
 private:
  std::function<void()> m_action;  
};
Run Code Online (Sandbox Code Playgroud)

但是将你想要捕获的东西存储为成员更简单House.


ALi*_*iff 5

试试这个:

class House {
  public:
    std::function<void ()> startAction;
    void init() {
        startAction = []() {};
    }  
};

int main() {
    House house;
    house.init();
    house.startAction();
    ...
}
Run Code Online (Sandbox Code Playgroud)