I am currently trying to make sure that a member function of one class is only called by a member function of another class.
The architecture is imposed and cannot be changed, the port means that some logic has to be done in a.call() before calling b.call(). a.call() therefore calls b.call() to simplify things and make sure the order is respected.
I found this answer to my question. Only, the problem is that I am using classes, and the two classes have the same member function name and so the #define tries to replace all the occurrences which have different prototypes.
Off the top of my head, options would be:
b.callprivate and makebaddaora.callas afriendb.callinto a class and put the body into a a private constructor withaora.callas afriendb.call, make sure the only call is ina.call, and add a comment at the declaration saying “if you call this function you will be fired”b.callto take at least one of the values it needs as a parameter (even if it ignores it and uses the value from somewhere else)