問題タブ [reinterpret-cast]
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.
c++ - ポインターのベクトルからconstポインターのベクトルへの再解釈は安全ですか?
この変換タイプは安全ですか
テンプレート引数が変更されているため、この場合、静的キャストは明らかに機能しません。しかし、この再解釈キャストを行うことで、私は本質的に同じタイプに恒常性を追加しているだけです。それで、これはすべての実用的な目的のために安全である必要がありますか?
c++ - アドレス、reinterpret_cast、多重継承
次のコードの動作を説明できる人はいますか?
- なぜ
b = 3
最初のケースで、つまりb2 == &d
true なのですか? - ケース 2 でなぜ OK なのですか?
b2
とのアドレスを印刷しましたがd
、それらは異なります。
c++ - バイナリ読み取り、reinterpret_cast、およびエンディアン
私は現在、エンディアン関連の問題に取り組んでいます。
ビッグエンディアンシステムにビッグエンディアンファイルがあると仮定しましょう。
このファイルの最初の値2882400152 = 0xABCDEF98
は、整数4です。
その値を整数4、、で読み取るには、次の_myint4
ようにします。
問題は、ファイル内の整数4の値を整数8で読み取ることに相当するものは何_myint8
ですか?
- ビッグエンディアンのファイルとシステムの場合は?
- リトルエンディアンのファイルとシステムの場合は?
私の最初の推測はそのようなものになるでしょう:
しかし、私にはまったくわかりません。これを行うための良い方法は何ですか?
重要:一時的な整数4の値は使用できません。で、整数4を直接読み取る必要があります_myint8
。
c++ - イテレータが連続したメモリゾーンを形成しているかどうかを確認する方法は?
私は現在、生データの配列またはベクトルを読み取る次の関数を持っています ( _readStream
is a std::ifstream
) :
最初の質問: この機能は大丈夫ですか?
メモリのブロックを直接読み取るため、からのメモリ ブロックがメモリ内で連続しfirst
ている場合にのみ機能します。last
それを確認する方法は?
objective-c - double または float を NSUInteger として再解釈してハッシュを作成するにはどうすればよいですか?
これは私のisEqualとハッシュのカスタム演算子です
その人は仕事をします。ただし、距離と startfrom をハッシュに組み込みたいとします。
私は単に追加すると思います:
対応していないのでエラーです。
では、代わりに何をすべきですか?
c++ - std::copy_n と reinterpret_cast
out
を使用しないと結果が異なるのはなぜreinterpret_cast
ですか?
c++ - reinterpret_castとc-stylecastは互換性がありますか(C ++標準による)?
C ++標準では、これは実装で定義されていると述べており、元の型にキャストバック(を使用)すると元の値が最初に渡されることreinterpret_cast
を除いて、保証はありません。reinterpret_cast
少なくともいくつかのタイプのCスタイルのキャストは、ほとんど同じように動作します-同じ値で結果を前後にキャストします-現在、列挙とint
sを使用していますが、他の例もいくつかあります。
C ++標準は両方のキャストスタイルにこれらの定義を提供しますが、混合キャストにも同じ保証を提供しますか?ライブラリXが関数からint Y()
何らかの値を返す場合、Yの本体で初期値をenum
変換するために使用されたキャストを気にせずに、上記のキャストのいずれかを使用できますか?私はXのソースコードを持っていないので、チェックできません(そして、とにかく次のバージョンで変更される可能性があります)、そしてそのようなことはドキュメントにほとんど言及されていません。enum
int
このような場合のほとんどの実装では、両方のキャストが同じように動作することを私は知っています。私の質問は、C++標準はそのような場合について何と言っているのかということです。
c++ - c++、再解釈_キャスト構造体*をunsigned char*に
最初は私の英語で申し訳ありません:)だから、私は構造体と変数を持っています
関数 unsigned char ポインター引数に送信する必要があります。への型へreinterpret_cast
のポインタをキャストするために使用しようとしました。PACKET
unsigned char*
しかし、私は試しました
何も見えません。なんで?そして、これを正しくキャストする方法は?
multiple-inheritance - エラー C2440: 'reinterpret_cast': 'overloaded-function' から 'StateFunc' に変換できません
コードは、C の DDJ 記事ステート マシン設計から取得されます。
そして、実装は次のとおりです。これも、多重継承を除く DDJ の記事から...
何が起こっているのかについての説明やヒントは大歓迎です...
qt - Qt-カスタムポインタを引数として取るスロットを呼び出す
Qtのシグナルとスロットをハックしようとしていますが、QMetaType::invokeMethodが呼び出されているスロットにポインター引数を正しく渡さないという問題が発生しました。
それから私はそれを次のように呼びます:
どこclass MyObject : public QObject { ... }
。私もしQ_DECLARE_METATYPE(MyObject *)
ますqRegisterMetaType<MyObject *>("MyObject *")
何が起こるかというと、レシーバーのスロットが呼び出されていますが、引数の値は、 as0
に何を渡しても常に重要です。call(...)
Q_ARG
好奇心から、レシーバーの自動生成されたMOCファイルを調べたところ、スロットが次のコードで呼び出されていることがわかりました。
の値が。_a[1]
の適切なアドレスを持っていることがわかりますMyObject *
。しかし、reinterpret_cast
それをに変え0
ます。
今、私は次の質問があります:
1)プログラムでスロットを呼び出し、ポインタ引数がスロットに適切に渡されるようにするにはどうすればよいですか?2)これは*reinterpret_cast< MyObject*(*)>(_a[1])
どういう意味ですか?余分な括弧の(*)
意味と、このコードの解釈方法は?