"gross" is a subjective term.

I'd like header files to quickly and clearly communicate what the class is doing.

In this case. the HeadData class is really just a storage class. It's really really really simple. It's almost as simple as just a struct, but it has clean C++ protections around it.

But, if the constructor (and the addXXX() pseudo-setters) are hidden in the implementation, then the header doesn't convey this important notion.

How the file looks is important, I agree. But more important is how quickly it communicates what the class is doing.

This class would be more clearly documented if all this stuff was in the header.