00001
00026
00027
00028 #ifndef EOEVALFUNCPTR_H
00029 #define EOEVALFUNCPTR_H
00030
00031 #include <eoEvalFunc.h>
00032
00038 #ifdef _MSC_VER
00039 template< class EOT, class FitT = EOT::Fitness, class FunctionArg = const EOT& >
00040 #else
00041 template< class EOT, class FitT = typename EOT::Fitness, class FunctionArg = const EOT& >
00042 #endif
00043 struct eoEvalFuncPtr: public eoEvalFunc<EOT> {
00044
00051 eoEvalFuncPtr( FitT (* _eval)( FunctionArg ) )
00052 : eoEvalFunc<EOT>(), evalFunc( _eval ) {};
00053
00055 virtual void operator() ( EOT & _eo )
00056 {
00057 if (_eo.invalid())
00058 _eo.fitness((*evalFunc)( _eo ));
00059 };
00060
00061 private:
00062 FitT (* evalFunc )( FunctionArg );
00063 };
00064
00065 #endif
00066