假设您正在将函数传递给函数:
foo(boost::bind( &CLASS_NAME::OnValueChanged, this, _1));
但问题是_1
类型可能会有所不同,我真的不需要它,只需要它的数据。所以我想写这样的东西:
foo(boost::bind( &CLASS_NAME::OnValueChanged, this, _1.GetName()));
因为无论_1
是什么类型,我都知道每次有GetName()
方法,结果类型都相同(wstring
)。
怎么做?
此外,在我的情况下,持有GetName
的类型是模板。
答案 0 :(得分:1)
你只需要另一个绑定!
foo(boost::bind( &CLASS_NAME::OnValueChanged, this, boost::bind(GetNameFunctor(), _1));
GetNameFunctor()的通用实现看起来就像是。
struct GetNameFunctor {
typedef std::string result_type;
template <typename T> std::string operator()(T const& o) const {
return o.GetName();
}
};
如果您想在此处获得更多控制/支持,可以查看