There is a problem with private and protected member functions. The hook function will not have permission to call the private and protected method on the remote object. We need therefore to either use the friend notation to create each hook for a private or protected member a friend (will mean putting an extra macro in for each member function) or fobid the calling of private members on remote objects.
Is there a better alternative, such as going via a template function (a 'FunctionCaller') that takes an arbitary function name and set of parameters and calls that function with those parameters. This template function could be declared a friend of the class UCPP. This would seem to give the possibility of getting round the protection without requiring any extra work from the scanner.