Switched to virtual CRT trampoline class inheritance
Trampoline inheritance is something of a nuissance because all of the base class methods need to be repeated. I was doing this with some defines that shoehorned common methods into each Member subclass, but that was messy. This approach (using "Curiously Recursive Templates") is nicer: each PyWhatever class is templated with its base class, so that PyFirmNoProd<FirmNoProd> ends up with inheritance path: PyFirmNoProd<FirmNoProd> : PyFirm<FirmNoProd> : PyAgent<FirmNoProd> : PyMember<FirmNoProd> : FirmNoProd : Firm : Agent : Member This is still a lot of duplication, but it's mainly at the compiler level which makes maintenance easier and keeps the code a bit cleaner.
Showing with 129 additions and 125 deletions