コード全体でテンプレートを増殖させることなく、stl アルゴリズム for_each を使用しようとしています。std::for_each は MyFunctor クラスを値でインスタンス化したいと考えていますが、抽象化されているためできません。ポインターを渡し、必要に応じて参照解除するファンクター アダプター クラスを作成しました。
私の質問:
STL または Boost には既にそのようなアダプター クラスがありますか? 車輪を再発明する必要はありません。
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); }
乾杯、
デイブ