据我所知,所有整数类型都可以在头文件中初始化。这就是为什么我觉得这种声明在我的一个标题中是正确的(我们称之为 foo.h):
class Foo {
public:
static const unsigned int DEFAULT = 0xffffffff;
...
};
在发布模式下编译和链接时,它起作用了。但是,当我在调试模式下编译代码时,出现以下错误:
undefined reference to `Bar::Foo::DEFAULT'
collect2: ld returned 1 exit status
当我将初始化移动到 foo.cpp 时,问题就解决了:
const unsigned int Foo::DEFAULT = 0xffffffff;
但我不明白为什么。有人能猜到吗?
(我在 Ubuntu 上使用 gcc 4.2.4)