DOBON.NET DOBON.NETプログラミング掲示板過去ログ

構造体の中に構造体は宣言できますか?

環境/言語:[WinXP SP1 / VB.Net 2003 / Framework 1.1]
分類:[.NET]

こんにちわ。にしかわです。
いつもお世話になっております。

以下のように構造体の中に別の構造体の配列を宣言し、ファイルから読み込んだデータ
(ここでは省略しています)をセットしようとしたのですが、
20行目の個所でエラーを起こしてしまいます。


1: Structure MachineMst
2: Dim SeqNo As String
3: Dim Code As String
4: End Structure
5:
6: Structure SetuzokuMst
7: Dim Name As String
8: Dim Machine() As MachineMst
9: End Structure
10:
11: Public Shared SetuzokuSet(30) As SetuzokuMst
12:
13: Public Shared Sub SetData()
14: Dim i, j As Integer
15:
16: For i = 0 To 29
17: SetuzokuSet(i).Name = Name
18:
19: For j = 0 To 29
20: SetuzokuSet(i).Machine(j).SeqNo = SeqNo
21: SetuzokuSet(i).Machine(j).Code = Code
22: Next
23: Next
24: End Sub

8行目に構造体に、Dim Machine(30) As MachineMst とすると
【構造体メンバとして宣言された配列を初期サイズで宣言することはできません】
とエラーになります。

構造体の中に別構造体の配列を宣言することはできないのでしょうか?
構造体の中に、別の構造体を宣言した際、その配列の宣言の仕方をご存知の方、
お教えいただけると幸いです。

よろしくお願い致します。
■No5111に返信(にしかわ あつこさんの記事)
> こんにちわ。にしかわです。
> いつもお世話になっております。
>
> 以下のように構造体の中に別の構造体の配列を宣言し、ファイルから読み込んだデータ
> (ここでは省略しています)をセットしようとしたのですが、
> 20行目の個所でエラーを起こしてしまいます。
>
>
> 1: Structure MachineMst
> 2: Dim SeqNo As String
> 3: Dim Code As String
> 4: End Structure
> 5:
> 6: Structure SetuzokuMst
> 7: Dim Name As String
> 8: Dim Machine() As MachineMst
Public Sub Initialize()
Machine = New MachineMst(29){}
End Sub

のように構造体(この場合はその中で持つ配列)を初期化するメソッドを
用意します。

> 9: End Structure
> 10:
> 11: Public Shared SetuzokuSet(30) As SetuzokuMst
> 12:
> 13: Public Shared Sub SetData()
> 14: Dim i, j As Integer
> 15:
> 16: For i = 0 To 29
> 17: SetuzokuSet(i).Name = Name
> 18:

SetuzokuSet(i).Initialize()

のようにして構造体内の配列のサイズを確保します。

> 19: For j = 0 To 29
> 20: SetuzokuSet(i).Machine(j).SeqNo = SeqNo
> 21: SetuzokuSet(i).Machine(j).Code = Code
> 22: Next
> 23: Next
> 24: End Sub
よねKEN様

こんにちわです。にしかわです。

お教え頂いた方法で、無事解決致しました。
ありがとうございました。

まだまだVB.NETは初心者で、至らない点ばかりですが、
またご縁がありましたら、よろしくご指導いただけると幸いです。

この度は、本当にありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板