2, Hide private/internal symbol in the header file.
namespace _internal { class MyInternal {}; }
_internal is still visible to others, but with the name, the others know it's for internal usage.
You should consider using another name for this. Global names beginning with an underscore are reserved for the compiler. This might cause you some problems someday...