Sorry for the late answer, but I couldn't quite decide how to take your example code, as the functionality presented there makes no sense, and I couldn't come up with a good alternative example that would make more sense without changing the implied requirements too much.
Anyway, I'll tell you what I think of this:
1. In C++ there is absolutely no need for function pointers of any kind. I've been programming in C++ since before the advent of one-stage compilers some time in the mid-80s, and I've never come across requirements that couldn't be solved with a reasonable set of classes and polymorphism. Whatever it is you actually wish to achieve, you can make it work with a reasonable hierarchy of classes.
While I've seen corner cases where such a solution wasn't practical due to unusal restrictions, there is nothing like that that I can see in your question.
Which leads us to:
2. You didn't give us a meaningful specification. The example code doesn't seem to fulfil any meaningful function, and even without knowing how you implemented the solution, the code that uses it seems to be weird: all it does is throwing independent data into the same pot, and then trying to fit square objects into a round hole, if you get my meaning. Either you have to give us example code that reflects how you actually mean to use the solution, or, better, give us the original specification if you have one.
3. I can make some educated guesses about what you need, but not code that turns your weird example into something that makes any sense. let's start with some observations:
a) your classes appear to try implementing something that is known as the Command Design Pattern. See
Command pattern - Wikipedia[
^]
b) in your classes, you've defined a restricted set of functions, as well as the arguments that these functions are supposed to operate on. It's not a good idea to specify more than one function per class though: if for some reason you need to somehow change the argument number or types for only one of these functions, how can you resolve that? You've created one-to-one relationships between the functions and the data. If you have multiple functions operating on the same data, then either you need to duplicate the data and put each function and associated data into a separate object, or you need to put the data into a separate object, apart from the functions.
c) you have multiple levels of abstractions, and on the last level, you only call one function: doOperate(). Why not define your classes in such a manner that they implement exactly one function each?
4. The above leads me to believe you really need to implement the Command Pattern. I could offer code to fit your example, but the site I linked above already does a good job explaining what you need, and it does offer some example code too (the C++ example is at the bottom of the page). Try it.