我有这样一个类:
/* ClassA.h */
class ClassA{
public:
static const size_t SIZE = 10;
int array[SIZE];
funcA();
funcB();
...
};
而且,在其他CPP文件中,有这样的代码:
min(ClassA::SIZE, other_variable);
但是,我不能建立这个代码,我也得到类似下面的错误(在Mac OS X,苹果LLVM最新的CC 4.2(铛-425.0.28))
Undefined symbols "ClassA::SIZE" ...
这可能是因为“尺寸”头文件中定义的,并且可以像宏被使用,ClassA.o不包含“大小”,作为符号。 与此同时,以某种方式参照码内“min”是模板中使用时需要符号。 (I可以通过“纳米”检查它命令该ClassA.o不含“SIZE”的符号,但参照码的对象文件中包含“SIZE”符号。)
ClassA.o可以包含象下面这样定义ClassA.cpp字面号“SIZE”符号:
const int ClassA::SIZE = 10;
但在这种情况下,还有另一种错误象下面,由于在头文件被定义的数组。
error: fields must have a constant size: 'variable length array in structure' extension will never be supported
原始代码在一些旧的编译器(LLVM 4.0)工作。 任何好主意来解决这种情况呢?