Правильный ответ на это заключается в использовании Pimpl (через указатель , как указывает Павел). Есть также сумасшедший, но потенциально правильный способ, описанный в Imperfect C ++ Мэтью Уилсона, где вы можете заранее объявить внутреннюю структуру и включить непрозрачный блок памяти в ваш класс, а затем создать внутреннюю структуру на месте ( чье определение сделано в файле реализации) в конструкторе основного класса в файле реализации.
Я должен отметить, что Уилсон показывает это в приложении, где он признается в нескольких таких «преступлениях против программирования», как предостережение программистам, пытающимся быть слишком умными. Он говорит, и я говорю, что вы не должны использовать это. Тем не менее, если у вас есть некоторые первостепенные требования к производительности, то возможно , что это может быть полезно.