0

我在玩类模板和静态,看到了这个:

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<3>::ki 正在实例化该模板并为该特定模板定义静态时,因此rat<3>从那里开始使用就可以了..为什么这不起作用?

4

2 回答 2

1

应该

template<>
bool rat<3>::k = 0;

但更好用,false因为它更具可读性bool0

此外,如果你想让你为所有模板初始化变量true,例如:

template<int I>
bool rat<I>::k = true;

您仍然可以将模板专门用于I = 3

template<>
bool rat<3>::k = false;
于 2012-07-18T15:39:16.180 回答
1

您忘记了模板:

template<>
bool rat<3>::k = 0;

当然 MSVS 接受您的语法(但如果我关闭语言扩展,则不会)。

于 2012-07-18T15:39:46.660 回答