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