我試圖用鏘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