• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:構造体 要素2次元配列の初期化方法)

構造体 要素2次元配列の初期化方法

このQ&Aのポイント
  • 構造体の要素2次元配列の初期化方法として、ReDimステートメントを使用する方法がありますが、この方法ではnewが必要というエラーが発生します。
  • もう一つの方法として、Forループを使用して各要素を初期化する方法がありますが、2次元配列においてもnewが必要というエラーが発生します。
  • 現在、プログラムが進展しなくて困っており、どなたか詳しい方に指導をお願いしています。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

ANo.2です。 こちらでは動いていますよ。 正しいコードかどうかはわかりませんが^^; 新しいプロジェクトに、コードをコピペしてやってみてくださいな。

mokey
質問者

お礼

動作しました。  ループの中のinitializeがループの外にあったので....... そのまま入れてみたら、動作しました。  記述がシンプルで、最高です。 ちなみに、モジュールでは,newを使用せず、ループの中に2行で入れたら動作するようになりました。しかし、ご指導していただいた、記述方法がnewをいくつも記述しないので、最適だと思います。今後この方法を取り入れます。  こころから、有難うございます。 このような文章を、ほかにも記述指定待ったようです  なにかあれば、またよろしくお願いいたします。次からつぎへと出てきます。

その他の回答 (2)

回答No.2

ありゃ、そうですか。では、これではいかがでしょうか? ---------- Public Structure Elem Public nr As Integer Public type As Integer Public side()() As Double ' side(Nr.)(x|y|z)== normal vector Public Sub initialize() Dim intCnt As Integer ReDim side(10) For intCnt = 0 To 10 side(intCnt) = New Double(2) {} Next End Sub End Structure Public e_enq As Elem() = New Elem(10) {} ---------- Dim j, k As Integer For k = 0 To 10 With e_enq(k) .initialize() For j = 0 To 10 .side(j)(0) = 0.0 '*** .side(j)(1) = 0.0 .side(j)(2) = 0.0 Next j End With Next k ----------

mokey
質問者

お礼

再度、回答有難うございます。  テストしてみましたが、やはり最後の.side(j)(0) =0.0の箇所で同じエラーが発生します。newを使用とのメッセージがでます。  そちらでは、発生しないのでしょうか?  また、よろしくご指導のほどお願いいたします。

回答No.1

配列は難しいですね。私もあまり使わないので勉強になります。 2次元配列ということですので、下のようにしてみたら、とりあえず動きました^^; ---------- Public Structure Elem Public nr As Integer Public type As Integer Public side(,) As Double ' side(Nr.)(x|y|z)== normal vector Public Sub initialize() ReDim side(10, 2) End Sub End Structure Public e_enq As Elem() = New Elem(10) {} ---------- Dim j, k As Integer For k = 0 To 10 With e_enq(k) .initialize() For j = 0 To 10 .side(j, 0) = 0.0 '*** .side(j, 1) = 0.0 .side(j, 2) = 0.0 Next j End With Next k

mokey
質問者

お礼

早速の、回答有難うございます。  残念ながら、この方式を使うには、現在検討中のソフトでは、修正箇所があまりにも多くて、採用できません。他の関数とのやり取りもありますので。  あくまで、ジャグ配列で検討したいと思っています。 また、なにかお気づきになりましたらご指導をお願いいたします。  NETでも調査していますが、いまいちです。 今後もよろしくおねがいいたします。