問題タブ [static-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.

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

c++ - char * と unsigned char * の間で static_cast できないのはなぜですか?

どうやらコンパイラはそれらを無関係な型と見なしているため、reinterpret_cast必須です。なぜこれがルールなのですか?

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

c++ - スライスしても static_cast が null ポインタで機能するのはなぜですか?

多重継承を使用すると、スライスによって親オブジェクトへのアドレスが葉オブジェクトへのアドレスとは異なります。

したがって、Zオブジェクトがある場合z、そのアドレス&zは親のアドレスと一致しません。は より 4 バイト高くなります。Ystatic_cast<Y*>(&z)&z

良い点static_castは、それが静的であるため、ランタイムを占有しないことです(dynamic_castつまり、 と比較して)。ただし、Z*を指すがある場合0、親へのすべてのキャストは null ポインターも生成する必要があります。なぜこれが機能し、どのように実装されるのですか? それは、すべての単一static_castが分岐命令を導入することを意味しますか?

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

c++ - 「this」オブジェクトのstatic_castとconst_castを使用してconst-nessを追加することのC++の違いは?

Scott Meyersによると、getterのconstバージョンとgetterのnon-constバージョンでコードが繰り返されるのを防ぐために、non-constバージョンからメソッドのconstバージョンを呼び出しstatic_cast<const A&>(*this).Methodology(); ます。私が入力したVisualAssistX Intellisense:const_cast<const A&>(*this).Methodology();そしてそれはうまく機能しました。

この場合、特定のキャストを使用した場合の違いは何ですか?

使用中のIDE:VisualStudio2010。

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

c++ - static_cast演算子を使用した安全でないキャストがクラッシュしないのはなぜですか?

次のサンプルコードを検討してください。

dummy1行目では、派生クラスオブジェクトのアドレスを、基本クラスオブジェクトへのポインタを受け取る関数に渡しています。したがって、static_cast関数内dummyは安全です。

Line2では、基本クラスオブジェクトのアドレスを関数に渡しています。したがって、static_cast関数内dummyは安全ではありません。

しかし、コードを実行すると、プログラムは正常に動作します。not safe一言で言えば、プログラムは実行時にクラッシュするはずだと思いました。しかし、クラッシュは発生しませんでした。

これが私が得た出力です。

プログラムが実行時にクラッシュしなかった理由は何ですか?

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

c++ - デフォルトの引数値のstatic_cast

次のようなデフォルトの引数static_castを持つコンストラクターが欲しいです。

どこ

これにfunc_double_double_t似た多くの関数オブジェクトの基本クラスです。

GCCはstatic_cast、上記のコンストラクターに対して「無効」と言います。そのような振る舞いを実現する方法はありますか?

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

c++ - C++ で削除を置き換える、誤った情報

SSE 最適化メンバーを含むクラスでの 16 バイト アラインメントの問題を解決しようとしています (そして解決しました)。しかし、私を悩ませているのは、オンラインで見つけた例の大部分に、完全に冗長に見えるが多くの場所で繰り返されているコード行が含まれていることです。

問題の行は

pC は決して参照されず、関数の最後で範囲外になるため、それを行うポイントは何ですか? 私は行を取り出してみましたが、まったく違いがないように見えますが、その行は多くの例に表示されます! 本当に明らかな何かが欠けているのでしょうか、それとも異常なコード行が盲目的に例から例へとコピーされ、多くの「チュートリアル」で流行していますか?

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

c++ - C++ std::vector 型のポインターを設定する方法std::vector 型のオブジェクトへ

背景:

私は C++ で物理エンジンを構築しています。このエンジンは、デカルト空間で n 体システムの重力進化を計算し、それを定義済みの一連の座標系に変換します。最終的には、開始座標系を任意にする (デカルト座標系だけでなく、座標系 'n' で計算する) ことが目標ですが、それは遠い目標です。

問題:

座標系は互換性があるはずなので、デカルト座標系をベース座標系に拡張しました。

std::vector<Particle*>typeのメンバー オブジェクトを指すtype のポインターを作成しようとすると、エラーが発生しますstd::vector<CoordMember*>

コンパイラ エラーは次のとおりです。

この時点で、 のデータstate->membersはすべて 型であることがわかっていますParticle*。私が知らないのは、このキャストを可能にするために何をしなければならないかということです. 何か案は?

tl;dr:

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

c++ - void *にキャストして、C++でオブジェクトをpthreadに渡します

オブジェクトをpthread_create関数に渡す方法について少し混乱しています。void *へのキャスト、pthread_createへの引数の受け渡しなどに関する断片的な情報をたくさん見つけましたが、それをすべて結び付けるものは何もありません。私はそれをすべて一緒に結び付けて、愚かなことを何もしていないことを確認したいだけです。次のスレッドクラスがあるとしましょう。 編集:不一致を修正しましたstatic_cast

明確にするために、クラス内のデータには、ミューテックスを使用して実際のデータを保護するProtectedBufferなどのメソッドでのみアクセスできます。ProtectedBuffer::push_back(int arg)

私の主な質問は:私はstatic_cast正しく使用していますか?そして、私の2番目の質問はvirtual void *thread_routine(void *arg)、渡されたvoidポインターをへのポインターにコピーする最初の行が必要ProtectedBufferですか?

また、問題を引き起こす可能性のある他のことをした場合は、それを聞いていただければ幸いです。

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

gcc - static_cast / float / bitset / const の奇妙さ

ほんの数時間前に、次の質問が出てきました:変数は定数式に現れることはできません

OPにとって幸いなことに、提供された回答で彼の問題は解決しましたが、解決策を再現できません。

コードをさらに単純化しようとしましたが、次のことに行き詰まっています。

でコンパイルした場合-pedantic、最初の例はコンパイラによって受け入れられますが、除算のあるもの (ただし明らかに同じ数) は拒否され、「length_2 は定数式に表示できません」というメッセージが表示されます。

なし-pedanticでもありでも、-pedantic -std=c++0xそれ以上の警告なしに受け入れられます。

これは完全な出力ですg++ -v(ドイツ語で申し訳ありませんが、とにかく正しい情報が得られると確信しています):

この動作の理由は何ですか? 1.0f特別な定数として認識されているため、 static_cast の動作が変わっていると思いますか?