問題タブ [struct]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
13 に答える
21975 参照

c++ - C++ メンバー変数のエイリアス?

私はそれが行われたのを見たことがあると確信しているので、これが可能であると確信しています。素晴らしいと思いますが、「これはひどいアイデアです。なぜなら____だから」というような回答を喜んで受け入れます。

基本的な構造体があるとします。

ここで、これらの変数にエイリアスを実装したいと思います。

理想的には、3 番目の構文は配列と見分けがつかないものです。つまり、arrデータを格納する float の配列を期待する関数 (たとえば、OpenGLglGet関数の多く) に参照パラメーターとして送信した場合、正常に動作します。

どう思いますか?可能?可能ですが、愚かですか?

0 投票する
9 に答える
226737 参照

javascript - Javascript の構造体

以前は、関連する変数を多数格納する必要がある場合、クラスを作成していました。

しかし、これが良い習慣であるかどうかは疑問です。JavaScript で構造体をシミュレートする他のより良い方法はありますか?

0 投票する
1 に答える
3587 参照

c# - C# でパックされた構造体のアンマネージド バッファーをマーシャリングする方法

次の pinvoke シグネチャを使用して、C# で Windows FilterSendMessage 関数を (正常に) 呼び出しています。

outBufferパラメーターには、C で次のように定義された任意の数の構造体 (次々にパック) が取り込まれます。

nameフィールドには、可変長のヌル終了 Unicode 文字列が割り当てられます。lenフィールドは、構造体の合計サイズ (名前文字列を含む) をバイト単位で示します。管理されていない側で構造体がどのように処理されているかについては、何も問題はないと確信しています。

c# で次のように定義されている BAH_RECORD 構造体のインスタンスに outBuffer をマーシャリングしようとすると、私の問題が発生します。

bah.name を印刷/表示/表示しようとすると、ゴミが表示されます...

outBuffer に実際に有効なデータが含まれていることを確認するために、C# で大雑把なポインター ハッカーを実行して、Marshal.ReadInt32 を 2 回呼び出し (最初の 2 つの構造体フィールドをカバーするため)、次に Marshal.ReadByte を数回呼び出してバイトを入力しました。 [] を Encoding.Unicode.GetString() の引数として使用します...文字列は正常に出力されるので、間違いなくそこにあるので、マーシャラーに正しく処理させることができないようです (できる?)

どんな助けでも大歓迎

スティーブ

0 投票する
7 に答える
81183 参照

c - C: 構造体定義内の構造体へのポインター

この構造体の定義で次の構造体へのポインターを取得するにはどうすればよいですか。

これは私が最初に書いた方法ですが、機能しません。

0 投票する
6 に答える
7761 参照

c++ - バイト配列を構造体に逆シリアル化する

文字/バイトの配列であるネットワーク経由の送信を取得します。ヘッダーといくつかのデータが含まれています。ヘッダーを構造体にマップしたいと思います。次に例を示します。

構造体に可変長フィールドが含まれていないと仮定すると、これは常に機能しますか? これを行うプラットフォームに依存しない/慣用的な方法はありますか?

ノート:

シリアル化/逆シリアル化を可能にするライブラリをインターネット上でかなり見てきましたが、以前に同じライブラリでシリアル化されている場合にのみ、何かを逆シリアル化できるという印象を受けました。ええと、私は送信の形式を制御できません。私は間違いなく、すべての値が互いに続くバイト/文字配列を取得するつもりです。

0 投票する
30 に答える
317000 参照

c# - C# でクラスではなく構造体を使用する必要があるのはいつですか?

C# でクラスではなく構造体を使用する必要があるのはいつですか? 私の概念モデルは、項目が単に値型のコレクションである場合に構造体が使用されるというものです。それらを論理的にまとめてまとまりのある全体にする方法。

ここでこれらのルールに出くわしました:

  • 構造体は単一の値を表す必要があります。
  • 構造体のメモリ フットプリントは 16 バイト未満である必要があります。
  • 作成後に構造体を変更しないでください。

これらの規則は機能しますか? 構造体は意味的に何を意味しますか?

0 投票する
2 に答える
3943 参照

c# - 構造体コンストラクターで自動プロパティ バッキング フィールドの値を設定するにはどうすればよいですか?

次のような構造体があるとします。

もちろん、The 'this' object cannot be used before all of its fields are assigned toというコンパイラ エラーが生成されます。

バッキング フィールドまたはプロパティ自体に値を割り当てる方法はありますか? または、独自の明示的なバッキング フィールドを使用して昔ながらの方法でプロパティを実装する必要がありますか?

0 投票する
6 に答える
724 参照

c# - 構造体がスタックに存在しないのはいつですか?

私はJonSkeetの書評を読んでいて、彼はHead First C#の多くの不正確さを調べています。

それらの1つが私の目を引きました:

[エラーセクションの下]構造体は常にスタック上に存在すると主張します。

どのような状況で構造体はスタックに存在しませんか?これは、私が構造体について知っていると思っていたものとは逆になります。

0 投票する
4 に答える
15810 参照

c# - 構造体のパラメーターなしのコンストラクターを非表示にする

C#でユーザーからパラメータなしのコンストラクタを隠すことは可能ですか?

常にパラメーター付きのコンストラクターを使用するように強制したい

たとえば、この Position 構造体

x 座標と y 座標を指定して、ユーザーが位置を新しくできるようにしたいだけです。

ただし、パラメーターなしのコンストラクターは常に使用できます。

私はそれをプライベートにすることはできません。または、パブリックとして定義することもできます。

私はこれを読みました: .NET で構造体の既定のコンストラクターを定義できないのはなぜですか?

しかし、それは本当に役に立ちません。

これが不可能な場合 - 渡された位置に値があるかどうかを検出する最良の方法は何ですか?

各プロパティ フィールドを明示的にチェックしますか? よりスマートな方法はありますか?

0 投票する
6 に答える
9210 参照

c++ - C++ 構造体フィールドから個々のフィールドのサイズを取得する

短いバージョンは次のとおりです。C++ フィールドの個々のフィールドのサイズ (ビット単位) を知るにはどうすればよいですか?

明確にするために、私が話している分野の例:

Test オブジェクト全体のサイズを取得するのは簡単です。

通常の構造体メンバーを取得できます

Test::field4 など、個々のフィールドのサイズを取得する方法を知りたいです。上記の通常の構造体メンバーの例は機能しません。何か案は?または、誰かがそれが機能しない理由を知っていますか? sizeof はサイズをバイト単位で返すだけなので、役に立たないことはかなり確信していますが、それ以外のことを知っている人がいれば、私はすべて耳を傾けます。

ありがとう!