how How can I check a function was called by another function?

 

Questions


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.

 

 

————————————————-

Answer

Off the top of my head, options would be:

  • Make b.call private and make b add a or a.call as a friend
  • Turn b.call into a class and put the body into a a private constructor with a or a.call as a friend
  • grep the source code for b.call, make sure the only call is in a.call, and add a comment at the declaration saying “if you call this function you will be fired”
  • Change b.call to take at least one of the values it needs as a parameter (even if it ignores it and uses the value from somewhere else)

c#,class,function

[], [], []

Facebook Comments

Post a comment