私のアプリケーションは訪問者パターンを実装しています。同じインターフェースを実装している複数の異なる訪問者がいて、これらの各訪問者の訪問方法を定義するのに最適な場所を決定しようとしています。
私は当初、1 人の訪問者のすべての定義を含む 1 つの .cpp ファイル (訪問者ごとに 1 つのファイル) を用意するのが最善であると考えていました。このアプローチでは、各訪問者定義ファイルに、訪問する要素と、各訪問方法に必要なサポート機能の両方に対する多数の #include ディレクティブが含まれることになります。
別の方法として、各要素の定義を含む .cpp ファイルで各訪問者の訪問メソッドを定義することもできます。このアプローチでは、訪問者ヘッダーを除いて、必要なインクルード ディレクティブが既に存在します (したがって繰り返されません)。ビジター ヘッダーには、各要素の前方宣言のみが含まれているため、このアプローチの利点は、含まれるヘッダーの数が全体的に削減されることです。
elementa.cpp
#include ...
ElementA specific stuff.
#include ...
void ElementA::accept(Visitor &visitor) {
visitor.visit(*this);
}
void VisitorA::visit(ElementA &element)
{
//do cool stuff
}
void VisitorB::visit(ElementA &element)
{
//do other cool stuff
}
私の質問は、このように単一のファイルで複数のクラスのメソッドを定義することは受け入れられる/一般的ですか?