我在玩弄类模板和静态变量,看到的是:
template<int I>
struct rat
{
static bool k;
};
bool rat<3>::k = 0; //this is line 84 of the only source file play.cpp
int main(int argc, char **argv)
{
rat<3> r;
}
编译器错误:
play.cpp:84:错误:模板参数列表太少
我以为,当我说rat :: k时,我正在实例化该模板并为该特定模板定义静态对象,因此从那时起使用
rat<3>
就可以了。.为什么这不起作用? 最佳答案
应该
template<>
bool rat<3>::k = 0;
但最好将
false
用于bool
,然后使用0
,因为它更具可读性同样,如果您想将所有模板的变量初始化为
true
,例如:template<int I>
bool rat<I>::k = true;
而且您仍然可以为
I = 3
专门设计模板:template<>
bool rat<3>::k = false;