无法为数组指定显式初始值设定项[SystemC]

问题描述:

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

2dArray [M] [N]表示m行n列,这样可以保持n个值在每一行中,但是在您的代码定义矩阵其中有3列,但仍然要分配4个值。

可以使用循环用于填充阵列:

#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