我想在整個代碼中使用stl算法for_each而不增加模板。 std :: for_each希望通過值實例化MyFunctor類,但它不能自它的抽象。我創建了一個函子適配器類,它傳遞一個指針,然後在適當的時候將其取消。std中的多態函子:: for_each
我的問題:
請問STL或升壓已經有了這樣的適配器類?我不想重新發明輪子!
struct MyFunctor {
virtual ~MyFunctor() {}
virtual void operator()(int a) = 0;
}
namespace {
template<typename FunctorType, typename OperandType> struct
FunctorAdapter
{
FunctorAdapter(FunctorType* functor) : mFunctor(functor) {}
void operator()(OperandType& subject)
{
(*mFunctor)(subject);
}
FunctorType* mFunctor;
}; }
void applyToAll(MyFunctor &f) {
FunctorHelper<MyFunctor, int> tmp(&f);
std::for_each(myvector.begin(), myvector.end(), tmp); }
乾杯,
戴夫
好的答案,我不清楚他的例子,但如果矢量包含整數,他不需要綁定一個「這個指針」,該mem_fun? – 2008-10-20 17:29:21
不,因爲這個指針將作爲for_each的參數傳遞。成員函數指針將處理虛擬查找。 – coppro 2008-10-20 19:09:36