問題タブ [multiple-indirection]

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 投票する
5 に答える
39013 参照

c - ダブル スター (例: NSError **) とは何ですか?

だから、私はこれを見ました:

アップルドキュメントにあります。なぜ2つ星?重要性は何ですか?

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

c# - C# P/Invoke: 構造化パラメーターのフィールドに対して二重の間接参照を実現する方法

C# からネイティブ dll を呼び出しています。問題の特定の関数について、必要なパラメーターの 1 つは、二重間接フィールド (ポインターへのポインター) を含む構造体です。

たとえば、次の C プロトタイプと構造体を取り上げます。

次の C# コードは、AnotherStruct フィールドに対して単一レベルの間接化のみを提供しますが、これは正しくありません。

ここで必要な二重間接化を実現するにはどうすればよいですか? 関数への二重間接パラメーターの場合の方法は知っていますが、構造体に埋め込まれているという事実に混乱しています。

AnotherClass フィールドを IntPtr として宣言してから、アンセーフ コードを使用して適切な値を割り当てる必要があるかもしれません。それは有効なアプローチですか?他に/より良いオプションはありますか?

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

c++ - タフ:C++で深くネストされたポインターを処理する

私はこの構造を定義します:

およびこれらの構造:

次に、コードでs_moleculeへのポインターを返します(t_moleculeにtypedefしますが、それでも)。

このポインタを使用して、このコードを機能させることができます。

私がそれを置き換える場合:

私は今、厄介なsegfaultsを取得します...

ここにあまり多くを入れないでください、しかし私がこれをしようとしたとき、私はまたsegfaultsを得ています:

繰り返しになりますが、current_moleculeはs_molecule構造体へのポインターであり、構造体の配列が含まれています。構造体の配列には、直接varsがあるか、ポインターがあります。これらの間接参照の複数のレイヤーを機能させることができません。これらのsegfaultsを修正するための提案。

参考までに、g++を使用してLinuxCentos 5.4でコンパイルし、カスタムmakefileシステムを使用しています。

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

c++ - C++ での奇妙なポインターの問題

私は非常にイライラするポインターの問題に遭遇しています。以前ここに投稿しました: TOUGH: C++ で深くネストされたポインターの処理

しかし、その投稿は長くなりすぎて古くなっているため、詳細を記載して再投稿することにしました。

私のタイプを定義するヘッダーファイルは次のとおりです。

そして、分子の配列に t_molecule タイプの var (t_molecule の定義については上記のヘッダーを参照) を追加するための呼び出しを次に示します。

これは完全に機能します... resname 文字列が出力され、結合ベクトルの最後の結合に関する情報が出力されます。次に、すべての分子を追加したら。私はこれを次のように呼びます:

これは、bonds 行でのセグメンテーション違反です。

追加ステップで印刷したインデックスから、ベクターにプッシュしている分子を上書きしていないことがわかります (サイズが大きくなっています)。

言い換えれば、何が起こっているように見えるかは次のとおりです。サブベクターの読み取り(機能)->親ベクターにいくつかのアイテムを追加->サブベクターの再読み取り(セグフォールト)

これらの関数は、分子変数をベクターに追加するための唯一の手段であり、分子変数は一度だけ追加され、現在のテストでは死後に変更されません。

何か案は????前もって感謝します!!

0 投票する
3 に答える
15972 参照

c - C での二重ポインタ const の正確性の警告

非 const データへのポインターは、同じ型の const データへのポインターに暗黙的に変換できます。

追加のインダイレクションに一致する const 修飾子を追加すると、論理的には同じように機能するはずです。

ただし、フラグを指定して GCC または Clang でこれをコンパイルすると-Wall、次の警告が表示されます。

const追加の修飾子を追加すると、「ネストされたポインター型の修飾子が破棄される」のはなぜですか?

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

objective-c - 非オブジェクトを間接的に渡す(そして設定する)方法は?

NSErrorオブジェクトは次のように頻繁に使用されます(この前の質問から取得):

BOOL間接参照と同様のことを実現したい:

しかし、これを正しく機能させる方法がわかりません。

NSErrorを含む特定のメソッド仕様の場合、適切な実装には次のようなものが含まれます(これも前の質問から)。

同様のロジックで、これはBOOL間接参照で機能するはずです。

なぜこれが機能しないのですか?これを実装する適切な方法は何ですか?

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

c - 固定配列値で呼び出されるvoid**パラメーター

固定サイズの配列を宣言しました:

そして、valsの値を割り当てる関数に配列を送信したいと思います。

これは基本的に、特定の検索文字列の後にすべてを読み取ります。例えば:

「CONFIG=」はプレーンテキストで、その後に15個のタブ区切りの数値が続きます。

ここには、間接参照配列と固定サイズの配列について悩むことにはほど遠いので、固定サイズの配列をパラメーターとしてvoid **として送信できるかどうかを知りたいです(サイズがアレイは尊重されます。別の問題です。)


tl;drバージョン

なぜこれが許可されないのですか?

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

objective-c - ARC では、「CFReadStreamRef *」への Objective-C ポインターへの間接ポインターのキャストは許可されていません

- とsを併用CFStreamCreatePairWithSocketToHostしたい。私は 2 つの ivarとを持っています。NSInputOutputStreamNSInputStream *_inputStreamNSOutputStream *_outputStream

次の 2 つのエラー メッセージが表示されます。

エラー: ' CFReadStreamRef *' (別名 ' struct __CFReadStream **') への Objective-C ポインターへの間接ポインターのキャストは、ARC では許可されません
エラー: ' ' (別名 ' ') への Objective-C ポインターへの間接ポインターのキャストは、CFWriteStreamRef *ARCstruct __CFWriteStream **では許可されません

どうすればこれを修正できますか? 使用して__bridgeみましたが、同様のエラーメッセージが表示されました。

0 投票する
0 に答える
116 参照

c++ - 設計を簡素化するためのアイデア/メソッド呼び出しで間接的なレベルを削除するためのアイデア

以下のコード ( ideoneのフル バージョン) では、メソッドへのポインタとContainer::void updateFooマップContainer::void updateBarが登録されていますm_updateMethod。これらのメソッドは、単にFoo::updateand をBar::updateそれぞれ呼び出します。

Foo::updateandを保存することで、この余分なレベルの間接性を回避する方法はありBar::updateますか?

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

c++ - int**からconstint**への無効な変換

int**として実装されたintの2D配列を持つクラスがあります。この2D配列にアクセサ関数を次のように実装し、const int **を返して、ユーザーが編集できないようにしました。

しかし、コンパイルエラー「int**からconstint**への無効な変換」が発生しました。constへの昇格がここで許可されていないのはなぜですか?編集権なしでユーザーに情報へのアクセスを許可するにはどうすればよいですか?