Using an Array of Functions is something you are not likely to need, but if you can use it, this can be a useful technique whose solution is not so easy to figure out.
G++: The GNU compiler (probably this should be in my Other C++ Sites page)
Flex: sample use of the tool that generates lexical analyzers (scanners)
See my Visual C++ Programmer Stuff page for more C++ stuff.