2015-04-22 123 views
0

我試圖成員陣列中的所有數據初始化爲0構造函數初始化列表的多維數組

class Array { 
    int m_anArray1D[10]; 
    int m_anArray2D[10][10]; 
public: 
    Array(): m_anArray1D{0}, m_anArray2D{{0}} {} 
}; 

但代碼永遠不會工作。

有無論如何分配一個二維陣列內的所有數據立即

+0

你不給任何類型的成員 – Morb

+0

你忘了括號 - > m_anArray1D({0}) – Morb

+0

哦對,這是一個打字錯誤,thx提醒 –

回答

0

好吧!你可以在構造

std::fill(m_anArray2d[0]+0,m_anArray2d[9]+10,0);

使用fill或者使用memset

memset(m_anArray2D, 0, sizeof(int)*10*10); 

或者

class Array { 
    int m_anArray1D[10]; 
    int m_anArray2D[10][10]; 
public: 
    Array(): m_anArray1D(), m_anArray2D() {} 
}; 
0

假設你的代碼有打印錯誤,並且你還沒有提供你的編譯器版本,下面的代碼對於支持C++ 98的所有編譯器來說就足夠了。

struct Array { 
    int m_anArray1D[10]; 
    int m_anArray2D[10][10]; 
}; 

int main(int argc, char *argv[]) { 
    Array arr = {}; 
    return 0; 
} 
+0

我正在使用C++ 11 –

相關問題