我的理解是,C + + 允许在类中定义静态 const 成员,只要它是整数类型。
那么,为什么下面的代码会给我一个链接器错误呢?
#include <algorithm>
#include <iostream>
class test
{
public:
static const int N = 10;
};
int main()
{
std::cout << test::N << "\n";
std::min(9, test::N);
}
我得到的错误是:
test.cpp:(.text+0x130): undefined reference to `test::N'
collect2: ld returned 1 exit status
有趣的是,如果我注释掉对 std: : min 的调用,代码编译和链接都很好(尽管前一行也引用了 test: : N)。
知道是怎么回事吗?
我的编译器是 Linux 上的 gcc 4.4。