考慮下面的類C++成員函數指針
class Foo
{
typedef bool (*filter_function)(Tree* node, std::list<std::string>& arg);
void filter(int filter, std::list<std::string>& args)
{
...
if (filter & FILTER_BY_EVENTS) {
do_filter(events_filter, args, false, filter & FILTER_NEGATION);
}
...
}
void do_filter(filter_function ff, std::list<std::string>& arg,
bool mark = false, bool negation = false, Tree* root = NULL)
{
...
}
bool events_filter(Tree* node, std::list<std::string>& arg)
{
...
}
};
我可以通過events_filter
作爲參數向do_filter
只有當events_filter
是static
構件。但我不想讓它變成static
。有沒有辦法可以將指向成員函數的指針傳遞給另一個函數?可能會使用boost庫(如函數)左右。
謝謝。
請參閱C++常見問題解答精簡版詳細解釋「指向成員函數」:http://www.parashift.com/c++-faq-lite/pointers-to-members.html – 2011-03-31 11:40:21
是的,那是按預期工作。謝謝 – maverik 2011-03-31 11:47:53
完美無瑕。 – 2011-03-31 11:54:10