模板类中的静态成员变量在定义时不会被初始化,只有赋给它一个确定的值时才会被初始化(分配内存)。
如果想要在某个源文件中初始化 首先要引用这个模板类,然后为这个模板类中的静态成员变量赋值。
template<class T>
class Test{
private:
T n;
const T i;
static T cnt;
};
template<class T>
int Test<T>::cnt = 0;//初始化
追问你好,现在假设我有一个需求,需要在不同的cpp文件中cnt需要为不同类型赋予不同的值,比如int要为1,double要为3.14,并且由于cnt是静态的,其他cpp源文件可以通过定义的public static函数获取到这个值,从而利用cnt来计算
追答静态变量也是变量,作用范围在这个类中,作用相当于全局变量,一般来说不用做public变量,建议用private
追问十分感谢您的回答,其实我是想使用静态成员构造一个在编译期就能构造好的链表,之后就直接查询链表就行。使用extern可以解决我这个问题。