テンプレートを使用し、いくつかの抽象データ型(ADT)を格納できる「リポジトリ」(ウェアハウス、好きなように呼んでください)があります。
担当者h
template <typename TAD>
class Repository {
public:
DynamicArray <TAD *> tad; // made a dynamic array myself, also uses templates
// since one ADT has one of the following two functions and the other doesn't
// I decided to not use TAD here
Person *findByName (string name);
Activities* findByDate(string date);
void save (TAD &p);
//etc
}
Rep.cpp
template <>
void Repository<Person>::save(Person &p) throw (RepositoryException) {
@code
}
template <>
void Repository<Activities>::save(Activities& a) throw (RepositoryException) {
@code
}
//etc
これで、ADTを個別に処理するコントローラーができたので、抽象データ型「Person」のみを反映するリポジトリを作成したいと思います。
どうすればいいですか?(テンプレートとしてPersonまたはActivityのいずれかを持つリポジトリタイプのオブジェクトを作成します...引数?)
このような: ?(下)
PersonController.h
Repository<Person> *repository;
ActivityController.h
Repository<Activities> *repository;