我需要一个函数指针,它接受两个参数并返回一个字符串。
我想传递一个适配器,该适配器包装一个接受一个参数的函数,并返回字符串(即丢弃其中一个参数)。
我可以轻松构建自己的适配器,它接受 2 个参数,调用包装函数,只传递一个参数。
但是我宁愿有一种简单的方法来动态创建适配器,如果在 C++/boost 中有一种简单的方法可以做到这一点?
这里有一些细节可以使这更具体:
typedef boost::function<CString (int,int)> TooltipTextFn;
class MyCtrl
{
public:
MyCtrl(TooltipTextFn callback = boost::bind(&MyCtrl::GetCellText, this, _1, _2)) : m_callback(callback) { }
// QUESTION: how to trivially wrapper GetRowText to conform to TooltipTextFn by just discarding _2 ?!
void UseRowText() { m_callback = boost::bind(&MyCtrl::GetRowText, this, _1, ??); }
private:
CString GetCellText(int row, int column);
CString GetRowText(int row);
TooltipTextFn m_callback;
}
显然,我可以提供一个成员来调整 GetRowText 以接受两个参数,并且只将第一个参数传递给 GetRowText() 本身。
但是是否已经有一个增强绑定器/适配器可以让我这样做?