我試圖編譯下面的代碼調用上新:如何多維數組
bool **copyBools(bool const * const * const input)
{
bool retval[4][4] = new bool[4][4];
for(int i=0; i<4; ++i)
{
for(int j=0; j<4; ++j)
{
retval[i][j] = input[i][j];
}
}
return retval;
}
但是,它不編譯並給出了這些錯誤。第一個錯誤是在bool retval
線和第二個錯誤是在return
行:
error: array must be initialized with a brace-enclosed initializer
error: cannot convert ‘bool (*)[4]’ to ‘bool**’
我的理解是一個[][]
陣列是同樣的事情,作爲一個**
。這是不是真的?這段代碼有什麼問題?爲二維數組調用new的正確方法是什麼?爲什麼我不能將它作爲**
歸還?
一個const-指向一個const布爾的const指針的指針。只是這些日子不常見到這種情況。 – WhozCraig