我有一个关于“static const”成员初始化的问题。在一个模板类中,我定义了一个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条款,但这绝对不是一个解决方案。
const
关键字只在声明时有用。 - GManNickG