В C++ и Objective-C у меня вошло в привычку пересылать любые необходимые классы, которые не нужно определять в заголовке, а затем импортируйте файлы заголовков, определяющие эти классы в исходные файлы, если это необходимо.
Есть ли когда-нибудь ситуация, в которой это было бы не очень хорошей идеей?
(Я знаю, что большим недостатком прямого объявления является ограниченное удобство использования неполного типа. Для целей этого вопроса предположим, что в заголовке мне нужно только использовать прямо объявленный класс в качестве неполного типа.)