質問: ### 前提・実現したいこと processingでの構造体の宣言方法と作成並びに変数の抽出を知りたいです。 (変数の抽出は,変数名を合わせるだけでいいのかも...?) 送信側:C# 受信側:Processing 通信方法:UDP通信@構造体 構造体の中に格納されている a,b,cを用いてProcessingでの描写のコントロールをしようと思っています。 ### 発生している問題・エラーメッセージ C#での構造体宣言を以下のようにしています。 これをprocessingで受け取れるようにしたいのですが, Processingでの構造体の作成方法を 【processing 構造体】で調べてヒットしたもの を見てスケッチにタイプしてもクラスとして認識されてしまって 構造体の宣言が出来ませんでした。 ### 該当のソースコード 構造体AAAAの中に 倍精度のaと構造体BBBBがあり, 構造体BBBBの中に 倍精度のbと構造体CCCCがあり, 構造体CCCCの中に 倍精度のcが存在しているイメージです。(入れ子構造) ``` [StructLayout(LayoutKind.Sequential)] //構造体AAAA struct AAAA { public double a;//double型のa public BBBB bbbb;//BBBB型のbbbb } //構造体BBBB struct BBBB { public double b;//double型のb public CCCC cccc;//CCCC型のcccc } 構造体CCCC struct CCCC { public double c;//double型のc } ```
回答: Processingは様々な言語対応になっていますがおそらくJava用のProcessingを想定しておられると思います。 > > 構造体の宣言が出来ませんでした。 > > > それは仕様です。構造体(struct)の構文を持つのはC, C++, C#など特定の言語だけでして、それは広く一般の言語で使えるような構文(そんな構文はないですが)ではありません。 Java版Processingでは、ファイルとのやり取りや通信によるやりとりの際にバイナリーデータを扱う場合、C/C++のようにstructでメモリー上の配置そのもの直接的に定義し、そのstructの領域へ一挙にread/writeするといった手法は使えません。バイトの並びとの間で「まずintを取り出して、次はfloatを取り出して・・・」のようにデータの並び順に1要素ずつ処理する形になります。 そうした目的にはいくつかのクラス、例えばDataInputStreamとかDataOutputStreamを用います。