添加占位符时遇到了一些问题std::bind
我的代码有点大,所以我会坚持要领
#define GETFUNC(a) (std::bind(&app::a, this, std::placeholders::_1))
class button{
button(<other parameters here>, std::function<void(int)>) { ... }
..
std::function<void(int)> onhover;
..
};
class app{
app(){
elements.push_back(buttonPtr( new button(<other parameters>, GETFUNC(onHover) );
..
typedef std::unique_ptr<button> buttonPtr;
std::vector<buttonPtr> elements;
..
void onHover(int i) {}
}
那段代码失败了std::bind
(我从错误日志中得到了这么多),但如果我改变它就可以工作:
- 全部
std::function<void(int)>
到std::function<void()>
onHover(int i)
到onHover()
std::bind(&app::a, this, std::placeholders::_1)
到std::bind(&app::a, this)
关于为什么会发生这种情况以及如何解决它的任何想法?