2015-07-06 63 views
3

我想有一個可以向一個方向擴展的2D靜態向量。陣列的靜態矢量權在我聽來:陣列的靜態向量

struct A 
{ 
    public: 
     static std::vector<std::array<float, 3> > theTable; 
}; 

我試圖從主與訪問:

A::theTable.push_back({0.0, 0.0, 0.0}); 

但我得到「沒有匹配的函數調用std::vector<std::array<float, 3ul> >::push_back(<brace-enclosed initializer list>)

如何我可以聲明這個數組的矢量,然後在其他地方使用嗎?

回答

2

它看起來像你還沒有定義theTable


struct A 
{ 
    public: 
     static std::vector<std::array<float, 3> > theTable; 
}; 
std::vector<std::array<float, 3> > A::theTable; //define 
+0

的確是需要的。但我也需要稻穀的答案才能使其運作起來! – Shinagan

2

你正在推動一個雙打數組,而不是浮點數。將0.0的值更改爲0.0f

如果您仍然有問題,可能是您需要一套額外的大括號。當我編譯,在G ++與所有的警告,我得到警告:

建議各地的子對象的初始化括號[-Wmissing-括號]

所以,正確的代碼應該是:

A::theTable.push_back({{0.0f, 0.0f, 0.0f}}); 
+0

是的!也使用kiviak的答案,它的工作原理! – Shinagan