如何妥善解决这个问题?
class House{
public:
void startAction();
void init(){
startAction = [] () {};
}
};
Run Code Online (Sandbox Code Playgroud)
我试过这个,但据说"表达不可转让"
我想定义startAction的功能,但是在init方法中.
我这样做是因为我想捕获的init方法中有几个变量传递给startAction.
您无法为成员函数指定值.
你可以有一个成员函数调用的成员变量,如下所示:
class House{
public:
void startAction() { m_action(); }
void init(){
m_action = [] () {};
}
private:
std::function<void()> m_action;
};
Run Code Online (Sandbox Code Playgroud)
但是将你想要捕获的东西存储为成员更简单House.
试试这个:
class House {
public:
std::function<void ()> startAction;
void init() {
startAction = []() {};
}
};
int main() {
House house;
house.init();
house.startAction();
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |