В Effective С++ (3-е издание) Скотт Мейерс в пункте 31 предполагает, что классы должны иметь, помимо своих классических файлов декларации (.h) и определения (.cpp), файл декларации Forward Forward Include File (fwd. h), какой класс, который не нуждается в полном определении, может использовать, а не наоборот, объявляя себя.
Я кое-что вижу в этом случае, но я действительно не вижу в этом жизнеспособного варианта... Кажется, очень сложно поддерживать, а скорее излишне и вряд ли необходимо.
Я могу, однако, увидеть его использование для форвардных деклараций шаблонов, которые довольно тяжелы. Но для простых классов? Похоже, что это боль для поддержания и создания множества почти пустых файлов, которые служат очень маленькой цели... стоит ли хлопот?
Вот пример:
// Class.h
class Class
{
Class();
~Class();
};
// ClassFwd.h
class Class;
// Class.cpp
Class::Class()
{
}
Class::~Class()
{
}
Мой вопрос:
Что вы, ребята, думаете? Если это хорошая практика?
ПРИМЕЧАНИЕ Меня больше интересуют аргументы для этой практики, чтобы увидеть, пропустил ли я что-то, что позволило бы мне согласиться с Скоттом Мейерсом.