-1

對不起,如果這確實很容易修復或一個愚蠢的問題,但我最近纔開始編程。將多維數組傳遞給使用變量作爲參數的函數

因此,在無效的主要()basicly我聲明瞭一個二維數組,像這樣:

void main() 
{ 
    const int grid = 5; 
    array[grid][grid]; 
{ 

不過,我想進入這樣的功能是:

void drawGrid(int grid, bool array[][]) 
{ 

} 

這將創建作爲第二個參數需要有一個數字的錯誤。但這是一個問題,因爲在主要我聲明我的數組使用變量

void drawGrid(int grid, bool array[grid][grid]) 
{ 

} 

將變量放在參數中不起作用。

如何在將參數傳遞給函數時使用int變量grid

我搜查了很多東西,看過有類似問題的人的答案,但我似乎無法弄清楚具體做什麼。任何人都可以告訴我如何解決這個問題,我會非常高興,因爲我一直在努力解決這個問題近兩個小時。謝謝。

+0

有什麼錯誤訊息?無論如何,我認爲這只是一個簡單的範圍問題。只要把'grid'放在全球範圍內即可。 – Downvoter

+0

@cad「一個數組可能沒有這種類型的元素」是如果你將這些參數留空的話。如果你把網格放在那裏,那肯定是一個範圍問題。然而,我不想在全球範圍內聲明這個變量(並且我們不允許在我的課程中),所以我必須以其他方式來做。 – Roixen

回答

0

您可以使用大小爲模板參數的函數模板。

template <size_t grid> 
void drawGrid(bool array[][grid]) 
{  
} 

,並簡單地稱之爲:

drawGrid(array); 

drawGrid<grid>(array); 
+0

謝謝,如果這工作正常,但我只想知道一個函數模板如何不同於一個普通的函數?有沒有辦法或將網格傳遞到正常的功能? – Roixen

+0

在函數模板中,編譯時必須知道大小。因此,'bool array [] [grid]'是一個有效的聲明。在常規函數中,大小在運行時間之前是未知的。因此,'bool array [] [grid]'不是一個有效的聲明。 –

+0

好的,非常感謝,我明白了! – Roixen

相關問題