我只是在尋找一組基函數的一個方便的基類,它基於take和int並返回void。unary_function爲什麼不定義operator()?
想用std/functional函子基本上會是unary_function<int,void>
和operator()
。
爲什麼virtual result_type operator()(const argument_type& _Left) const = 0;
未在unary_function模板上定義?我猜這是因爲可能存在變化的常量...
是否有其他一些模板我錯過了,包括operator()
?
我有一段時間沒有這樣做,我錯過了什麼?
我怎麼會還利用現有的功能就像
std::ptr_fun< HWND, void >(someFunction);
std::pointer_to_unary_function<HWND, void>(someFunction);
編輯: 也許我應該包括使用的另一半,使這個完整。也許這是用法的一半,不符合這個概念。
如何將函子傳遞給方法並使用它?
typedef unary_function<int,void> Functor;
void DoStuff(const Functor& functor) {
int demo = 1;
functor(demo);
}
functor作爲unary_function沒有定義operator(),所以DoStuff不能編譯。
感謝您的詳細信息,以及stl :: transform示例的提醒,這些提示讓我想起使用模板實現虛擬功能。 – 2010-10-08 00:43:33