I already know the basics about functors, how they are created and so on. I now have a specific code that would probably benefit from being converted to functors:
It's about a console input. If the user enters text and presses enter than it tries to execute the entered text as a command. Currently the available commands are stored in a std::map<std::string, (void*)(std::string)>
where map.first is the name of the command and map.second is the pointer to a function containing the code for this command.
If I now convert this to functors, what would be the best way to do so? Would I simply replace the function pointer by the actual functor objects? Or would remove the map and simply call the functor with the command string (commandFunctor("command")
)?
If the second: What would the best way such a functor should look like? Should I then only create ONE functor class and in it's operator() place a if-else-if-else... checking for the commands and store the code into it?
Or should I create a new functor class for each command and call the functor that corresponds to this command?
So, in short: User enters command. Command is looked up. If comnmand exists then execute its code. How to do this in the most efficietly way with functors?