I have started to combine classes of similar types in single header files..
It is good approach to implement library, but If it is your implementing client does not require the another extra classes for implementation. for example your header file contain 1 million lines of code after integrating similar type of classed then it took a long time to build.
As per my experience with library design and the standards that i follow in Microsoft technology Library Design Guidelines. In case of .Net platform it does not matter much, but In case of c++ that i got on the apple development Dynamic Library Design Guidelines is that library should maintain these following factor of implementation.
- Focused
- Easy to use
- Easy to maintain
Try to make your header files smaller and concise so that it will be easy to understand and increase the compile time. Sometime i prefer to have single class in single file, some experts suggest to follow this approach. You can combine classes those are much coupled to each other in single file.
Ref:
Multiple classes in a header file vs. a single header file per class
Google C++ Style Guide