让我们说,我有3个类,提供相同的功能。它们在类层次结构中是不相关的,但它们的实现方式与彼此类似。
出于示例目的,我们假设A,B和C是包含一些整数的数组,但是每个类都以不同的方式保存它。每个类都提供其迭代器类class_name::begin()
和class_name::end()
。现在我有一些函数模板foo
,它增加了数组的每个元素。
template <typename T>
void foo(T & a)
{
for(auto & element : a)
element++;
}
但是,我们可以说foo
具有非常大的身体,适用于T
,A
或B
等每种类型C
。我怎么告诉编译器:
我只会使用
foo<A>
,foo<B>
和foo<C>
。让我将我的函数移动到.cpp文件并链接它。
我问这个的原因是因为模板用于缩短代码,这适用于多个编译时可解析的上下文。我不想在.cpp文件中写3次相同的函数。