2つの引数を取り、文字列を返す関数ポインタが必要です。
1つの引数を取り、文字列を返す(つまり、引数の1つを破棄する)関数をラップするアダプターを渡したいと思います。
2つの引数を取り、1つの引数だけを渡すラップされた関数を呼び出す、独自のアダプターを簡単に作成できます。
しかし、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を適応させて2つの引数を取り、最初の引数のみをGetRowText()自体に渡すメンバーを提供できます。
しかし、それを可能にするブーストバインダー/アダプターはすでにありますか?