私が取り組んでいるプロジェクトでは、次のように実装したかなり大きなテンプレート クラスがあります。
ヘッダーファイルがあります
// MyBigClass.h
#ifndef MYBIGCLASS_H
#define MYBIGCLASS_H
template <typename T>
class MyBigClass {
/* -- snip -- */
};
#include "MyBigClass.cpp"
#include "MyBigClass_iterator.cpp"
#include "MyBigClass_complicatedFunctionality_1.cpp"
#include "MyBigClass_complicatedFunctionality_2.cpp"
#endif
そして、すべての実装ファイルは基本的に次のようになります。
// MyBigClass_foobar.cpp
template <typename T>
void MyBigClass<T>::member_1(){
/* -- snip -- */
}
template <typename T>
int MyBigClass<T>::member_2(int foo, T & bar){
/* -- snip -- */
}
// etc, etc
ではmain.cpp
、 を含めるだけMyBigClass.h
で、すべてが機能し、正常にコンパイルされます。実装を多くのファイルに分割した理由は、1200 行のファイル 1 つよりも、200 ~ 400 行の 3 つまたは 4 つのファイルで作業する方が好きだからです。ファイル自体はかなり論理的に編成されており、たとえば、ネストされたクラスの実装のみ、または相互に関連するメンバー関数のグループのみが含まれています。
私の質問は、これは行われたものですか? 先日、これを誰かに見せたときに奇妙な反応があったので、これが悪い習慣なのか、それともこのようなことを達成するためのより良い、より一般的な方法があるのか 知りたいと思いました.