Either way, as a practical matter, you're saying, "There's something called Thing I'm going to use." C++ forces you to say that before use in each translation unit. It's not really "repeating" yourself to write it, since you haven't "said" it yet in this TU.
Now, most of the time, the trade off of repeating
is more than offset by faster build times.But if
is actually you really want to put that in it's own header, typically "Thing_fwd.h"(apologies for any syntax errors, been a while since I've written C++)