2

これが私のコードです。

#include <map>
#include <string>
#include <algorithm>

class maptest {
public:
   int doubler(int val) { return val * 2; }
   int halver(int val) { return val / 2; }
   int negativer(int val) { return val > 0 ? -val : val; }
};


int main() {

   const char* const ID[] = {"doubler", "halver", "negativer" };
   int ID_SIZE = sizeof(ID) / sizeof(*ID);   

   //signature of maths functions
   typedef int (maptest::*mathfunc)(int);


   mathfunc mfuncs[] = { &maptest::doubler, &maptest::halver, &maptest::negativer};

   std::map<std::string, mathfunc> mathmap;   

   for(int i = 0; i < ID_SIZE; ++i) {
       mathmap.insert(std::make_pair(ID[i], mfuncs[i]));
   }

   //C2064: term does not evaluate to a function taking 1 argument
   int result = *mathmap["doubler"](3);

   return 0;
}

関数に渡されるパラメーターがなければ、これはうまくいくと思います。しかし、この方法でパラメーターを渡すにはどうすればよいでしょうか?

4

2 に答える 2