Well having a LinkDef let you control more carefully what the dictionary does and would give you an opportunity to suppress the warnings.
Alternatively you could try a relatively new alternative (so you mileage may vary) and remove the dictionary generation altogether and add a ClassDefInline
macro (instead of the ClassDef
macro).
If it works in you case, it will simply your build while still letting you use forward declaration.
Cheers,
Philippe.