Why is Thyra written with so many non-member helper functions instead of member functions?
In my C++ class we were told that the beauty of OOP is that functions and data can be put together into classes to combine the operations with the data they operate on. A: Generally member functions should only be used over non-member functions when direct access to private or protected data for functions is required. My minimizing the amount of code that can access non-public data you greatly simplify maintenance. See section 11.3.1 in “The C++ Programming Language: Special Edition” for a discussion of this topic.