Thanks for your answer.<p>Call me old-fashioned, but I actually think the separate compilation model is a good thing: it makes it possible to delegate the build process to a mostly language agnostic tool, and to mix languages easily (C, C++, D) in the same project.<p>About the implementation details internal to the class: the &#x27;private&#x27; keyword is the problem, not the header files.<p>If you want polymorphism, why not just use an abstract base class - as you would have had a layer of indirection anyway.
If you don&#x27;t want polymorphism, just use &quot;handle&quot; types. Am I missing something?