効果的な C++ (第 3 版) の項目 31 で、Scott Meyers は、クラスが従来の宣言 (.h) および定義 (.cpp) ファイルに加えて、前方宣言インクルード ファイル (fwd.h) を持つ必要があることを示唆しています。完全な定義を必要としないクラスは、自身を前方宣言する代わりに使用できます。
私はそれのケースをいくらか見ていますが、これを実行可能なオプションとは本当に思いません...維持するのは非常に難しく、かなりやり過ぎで、ほとんど必要ではないようです。
ただし、かなり重いテンプレートの前方宣言に使用されていることがわかります。しかし、単純なクラスの場合は?維持するのは苦痛であり、非常に小さな目的を果たすほとんど空のインクルードファイルを大量に作成するようです...手間をかける価値はありますか?
次に例を示します。
// Class.h
class Class
{
Class();
~Class();
};
// ClassFwd.h
class Class;
// Class.cpp
Class::Class()
{
}
Class::~Class()
{
}
私の質問:
皆さんはどう思いますか?これは良い習慣ですか?
注: 私は主に、この慣行の議論に関心があります。Scott Meyers に同意させる何かを見落としていないかどうかを確認するためです。