我有一個使用模板的多文件項目。用於列出所有可能的模板實現的C++解決方法
// Foo.h
template <class T>
class Foo
{
T bar;
};
我有一個類(例如杯)和一類該類的子類。
// 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
這個不斷增長的列表中。
這是一種痛苦。有沒有辦法避免必須列出所有這些可能性?
「在模板的.cpp文件中......」停在那裏,並且[閱讀本文](http://stackoverflow.com/questions/495021/why-can-templates-only-be-implemented-in -header-file) – WhozCraig
有沒有理由不希望頭中的定義? – jrok
上面的鏈接是超級有用和相關的。不把標題中的定義放在標題中的唯一原因是美學。但是最好把它們都列在cpp文件中。 –