我有一个具有静态const数组的类,它必须在类外部初始化:
class foo{
static const int array[3];
};
const int foo::array[3] = { 1, 2, 3 };
然后我在foo.o和main.o中得到一个重复的符号foo :: array foo.o持有foo类,main.o持有main()并使用foo的实例 如何在foo的所有实例之间共享此静态const数组?我的意思是,这就是静态成员的想法。
答案 0 :(得分:8)
在相应的.cpp文件中初始化它,而不是.h文件。
当你#include
时,它是一个预处理器指令,它基本上将文件逐字复制到#include
的位置。所以你通过将它包含在2个不同的编译单元中来初始化它两次。
链接器看到2并且不知道使用哪一个。如果你只在一个源文件中初始化它,那么只有一个.o会包含它,你就不会有问题。