That said, the philosophy of C++ is to promote encapsulation. Whenever you find your interface just passing through member elements ("getters and setters"), think again. Your class should have a meaningful interface for what the class does, rather than just serve as a loose container for stuff. Member objects should be an implementation detail rather than be part of public interface. If you want a loose container, just use a std::tuple or something like that.