テンプレートを使用するマルチファイル プロジェクトがあります。
// Foo.h
template <class T>
class Foo
{
T bar;
};
クラス (例: Cup) とそのクラスのサブクラスがたくさんあります。
// Cup.h
class Cup
{
};
class Chalice : public Cup
{
};
class SippyCup : public Cup
{
};
// ...etc.
テンプレートの .cpp ファイルでは、リンカー エラーを回避するために、考えられるすべてのテンプレート実装をリストする必要があります。これはC++ FAQから学びました。
//Foo.cpp
template class Foo<Cup>;
template class Foo<Chalice>;
template class Foo<SippyCup>;
// ...etc.
実際には、コードの任意の時点で使用したいサブクラスが約 20 以上あります。開発では、常に新しいサブクラスを作成しています。そのため、新しいものを作成するたびに、この増え続けるリストに追加する必要がありFoo.cpp
ます。
これは苦痛です。これらの可能性をすべてリストする必要を回避する方法はありますか?