我试图用锵3.0编译下面代码静态数组。 它没有链接,我在这里做得不对或这是一个编译器错误?奇怪接头误差的INT
错误遵循建筑x86_64的
未定义符号:在CC-JDTbNl.o LD __ZN9int_arrayIJLi0ELi1ELi2ELi3ELi4ELi5ELi6ELi7ELi8EEE5printEv ::未找到架构x86_64的
符号(多个)
“__ZN9int_arrayIJLi0ELi1ELi2ELi3ELi4ELi5ELi6ELi7ELi8EEE4listE”, 从参考
的代码如下
#include <iostream>
static const int a[] = {0,1,2,3,4,5,6,7,8};
template<int... Numbers> struct int_array;
template<int... Numbers>
struct int_array {
int x;
const static int list[] = {Numbers...};
static void print() {
for (const int x : list) {
std::cout << x <<std::endl;
}
}
static void print2() {
for (const int x : a) {
std::cout << x <<std::endl;
}
}
};
typedef int_array<0,1,2,3,4,5,6,7,8> array_of_ints;
int main (int argc, const char * argv[])
{
array_of_ints::print();
array_of_ints::print2();
return 0;
}
我想在类初始化仅允许用于静态常量* *不可或缺的成员。 –
谢谢你对此的回应我会将这个作为可能的bug提交给叮当声的人 – James
@Kerek我认为这是C++ 03的情况。在C++ 11中,可以对任何文字常量静态成员进行类内初始化。 – Yuji