我正在使用它std::bind
来绑定类外的函数并给出一个奇怪的行为。
它在某种程度上控制私有成员变量的值。
//MClass.h
typedef std::function<void(void)> Action;
class MClass {
public:
Action OnLeftClick;
//some other functions here
private:
int totalContents;
VScrollbar* _vscrollbar;
};
//MClass.cpp
在这种实现中,它不会产生任何错误:
MClass::MClasss() {
OnLefClick = std::bind(&VScrollbar::Scrolldown, this);
}
//but when I do this
//otherfile.h
MClass mclass;
void clickBar() {
mclass.totalContents = 0;
}
void InitComponentns() {
mclass.OnLeftClick = std::bind(clickBar, mclass);
}
并且每当我调用分配给OnLeftClick()
that的函数时clickBar()
, 的值totalContents
不会变为 0(totalContents 值由 MClass 的其他函数递增)。
我在这里做错了吗?