2017-02-25 63 views
0

Im使用VS2013和Allegro的SystemC庫一起使用。我試圖初始化兩個陣列,如下所示:無法爲數組指定顯式初始值設定項[SystemC]

int pathObs1[19] = {10,9,8,7,6,5,4,3,2,1,2,3,4,5,6,7,8,9,10}; 
int Map[10][4] = { 
    { 0, 3, 1, 4 }, //Grid 1 
    { 1, 3, 2, 4 }, //Grid 2 
    { 2, 3, 3, 4 }, //Grid 3 
    { 3, 3, 4, 4 }, //Grid 4 
    { 4, 3, 5, 4 }, //Grid 5 
    { 5, 3, 6, 4 }, //Grid 6 
    { 6, 3, 7, 4 }, //Grid 7 
    { 6, 2, 7, 3 }, //Grid 8 
    { 6, 1, 7, 2 }, //Grid 9 
    { 6, 0, 7, 1 } //Grid 10 
    }; 

但是,我收到錯誤的上述錯誤。我在SO上看到了一些有同樣問題的問題,但我不認爲他們正在處理SystemC。任何簡單的解決方法,這在SystemC中,因爲即時嘗試初始化我的SC_MODULE頭/構造?

編輯:我有我的數組初始化錯字。仍然得到相同的錯誤。

+1

您到僅具有3個元素的數組指派4個值。 –

+0

我猜這個錯誤可能已經足夠清晰了。 – ameyCU

+0

@PaulOgilvie是的,當我寫這個問題時,這是我的一個錯字。標題中仍然存在錯誤。即使我在頭中初始化一個數組大小2,我也會得到這個錯誤。它只讓我初始化我寧願避免的cpp/main中的數組值。 – Javia1492

回答

0

2dArray [M] [N]表示m行n列,這樣可以保持n個值在每一行中,但是在您的代碼定義矩陣其中有3列,但仍然要分配4個值。

0

可以使用循環用於填充陣列:

#include <iostream> 
#include <stdlib> 

int main() 
{ 
srand(time(null)); 
int map[10][4]; 
for (int i = 0; i < 10; i++) 
{ 
    for (int j = 0; j < 4; j++) 
    { 
    map[i][j] = rand(); // you can write smth like rand() % 5 to make a limit of the values 
    } 
} 
return 0; 
} 
+1

'int [m] [n]'和'int ** arr'不可互換。 –

+0

好的,沒錯。感謝您的通知! –

+0

我有我想要使用的預設值,他們需要在特定的索引。因此,即使對於1d數組,循環也沒有意義,因爲取決於索引值,數組值可能真的不同。也就是1,2,3,4,5,3,7,9,10,4,2,1。也就是說,對於程序來說,這些值看起來是隨機的。但是,在我需要維護的更大範圍內,它們實際上是有意義的。 – Javia1492

相關問題