2016-05-13 66 views
0

一個結構數組這是我的代碼:錯誤assigining含有另一種結構陣列

struct first 
{ 
    char x; 
    int y; 
}; 
first a[3]={{'a',1},{'c',2},{'b',3}}; 
struct second 
{ 
    first b[2]; 
    int z; 
}; 
second c={{a[0],a[1]},12}; 

基本上,當我分配second結構中,第一元件被認爲是該first結構類型的陣列。所以我想把兩個元素a[0]a[1]放在裏面。但它顯示了錯誤:

ERROR CYAPA.CPP 12: Cannot convert 'first' to 'char'

ERROR CYAPA.CPP 12: Cannot convert 'first' to 'int'

我在做什麼錯?我正在使用Turbo C++,因爲它是我們在印度的課程所允許的。

+1

在gcc 4.8上,編譯的代碼(我在main()中都初始化了)。 –

+1

lol。您需要使用Turbo C++。多可惜。 :( – erip

+0

感謝您的輸入,我最終最終爲第一個結構的每個元素創建了一個「id」,然後在第二個結構中使用一個整數來訪問'a []'的特定索引。 – poiasd

回答

1

這種初始化在C中是不允許的,但它在C++ 98中是允許的。

您的編譯器在1998年之前已經過了幾年,因此它不允許某些已經成爲C++標準一部分的東西就不足爲奇了。

您必須編寫{'a', 1}而不是a[0]等,或者使用宏。宏解決方案可能是這樣的:

#define A0 {'a', 1} 
#define A1 {'c', 2} 
#define A2 {'b', 3} 

first a[3]={A0, A1, A2}; 
second c={{A0, A1}, 12 }; 

另外,您可以初始化a,然後設置c在運行時。

+0

學校使用這樣的古老標準......我一定會要求我們的老師升級! – poiasd