我有一个关于“静态常量”成员初始化的问题。在模板类中,我定义了一个 const 成员并在类外对其进行初始化。
当我包含在多个 .cpp 文件中实现此类的 .h 文件时,我收到一个LNK2005 错误(我正在使用 VS2010),表示该常量已定义。
// List.hpp
template <class T>
class List {
static const double TRIM_THRESHOLD;
};
template <class T>
const double List<T>::TRIM_THRESHOLD = 0.8;
我尝试将成员初始化放在 .cpp 文件中,但随后出现链接器错误,提示根本没有定义常量。如果列表没有模板化并且我将初始化放在 .cpp 文件中,一切都很好。
这种情况有什么解决办法吗?我已经在文件周围有#ifdef/define 子句,这绝对不是解决方案。