This is a clunky way of doing callbacks from one class to another.  The more standard ways of doing it would be to

-   a functor (essentially a C++ class that exposes the operator() operator so it can be called like a function)
-   an abstract base class that defines the callback interface, and have your classes that expose the callback inherit from this abstract class.

Either would work here.