我有一个使用模板的多文件项目。
// 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
。
这是一种痛苦。有没有办法绕过列出所有这些可能性?