与某物的回答这个问题开始:C++多重定义错误
我在想,如果下面的代码 放于头文件如何解决多个定义错误包括多个通过不同的文件的.cc时间和连接在一起:
template <typename T>
class C {
static const int K;
static ostream& print(ostream& os, const T& t) { return os << t;}
};
// general case
template <typename T>
const int C<T>::K = 1;
// specialization
template <>
const int C<int>::K = 2;
这将如何工作?如果我需要在多个.cc文件中进行特殊化,该怎么办?然后,当我使用相同的定义链接多个.cc文件时,出现错误。 – user231536 2010-06-14 19:13:19
@ user231536:如果你编写一个普通的类,你只需要在一个.cc文件中提供方法定义,链接器就可以从其余的.cc文件中使用它们。完全专业化的相同作品。您只在一个.cc文件中提供专业化,链接器确保其他.cc文件可以使用它。 – Paul 2010-06-14 19:16:23