問題タブ [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.
c++ - C++ は、仮想ベース A を介してベース A から派生型 B に変換できません
私は3つのクラスを持っています:
A* から B* への静的キャストを試行すると、次のエラーが発生します。
c++ - Derived*const を Base*const にキャストします
編集 - 質問をもう少し文脈に入れます。
与えられた:
実装しようとすると
それは動作しません。const_cast
constnessを変更したくないのでaは意味がありません。また、指しているものを変更していないので、なぜg ++が教えてくれるのですか
? キャストを省略すると、
誰かがこれに光を当てることができれば、それは大歓迎です。
c++ - C++sdiアプリケーションでのStatic_castコンパイラエラー
メニューの使用状況の追跡を追加しようとしている小さなSDIアプリケーションがあります。ユーザーが特定のメニュー項目を選択した回数。
一部のメニュー項目はViewコンポーネント(DemoView.cpp)によって処理され、その他のメニュー項目はメインアプリ(DemoApp.cpp)によって処理されます。追跡構造はメインアプリで定義されているので、メニュー項目(ビューによって処理される)が選択されたときに、ビューの親に特別なメッセージを通知する必要があると思います。
これが正しければ、私の問題は、適切なON_MESSAGEコマンドを作成できないことです。このように見えます:
ここで、OnIncreaseFreq()は次のように定義されています。
ただし、このエラーが発生します:
私はこれで助けていただければ幸いです
c++ - qobject_castはどのように機能しますか?
Qtで次のコードを見つけましたが、ここで何が起こっているのか少し混乱しています。
特に何をreinterpret_cast<T>(0)
しますか?
誰か説明したいですか?
c++ - C++での型の変換エラー
Format()を使用する必要があるプログラムがあります。文字列リテラルとintをCString変数に結合する関数。私はこれを行うためのいくつかの異なる方法を試しました、それらのコードはここにあります:
最初のものはエラーC2664を返します:'void ATL :: CStringT :: Format(const wchar_t *、...)':パラメータ1を'constchar[33]'から'constwchar_t*'に変換できません
2つ目は、エラーはありませんが、テキストは漢字で表示されます。
3番目はエラーC2440を返します:'static_cast':'constchar[33]'から'wchar_t'に変換できません
CStringsをwchar_t*sに変換するためのアイデアはありますか?
ありがとう
c++ - 型キャストに関する初歩的な質問
乱数ジェネレーターの数値に math.h を使用するつもりでした。double では math.h 関数しか使用できないようです。そう:
「value」に「currentValue」の値、または転送される数値の値の少なくとも一部を指定しようとしています。私は乱数ジェネレーターを使用しているので、数値全体が転送されてもかまいません。機能するために必要なのはその一部だけです。
私はある時点で持っています:
** 示されていないコードを通じて、それらの値が設定されます。**
後で、currentValue に移動するために値の一部が必要です。
私は試した:
どんな助けでも大歓迎です。
助けてくれてありがとう。問題は解決された。
c++ - static_castは誤用されていますか?
利用可能な最も安全なC++キャストであるため、私はさまざまな感情を抱いてstatic_cast
いますが、同時に安全な変換と安全でない変換の両方を許可するため、実際に安全であるか、UBにつながる可能性があるか(キャスト時など)を判断するためのコンテキストを知る必要がありますサブクラスへ)。
では、なぜより安全な明示的なキャストがないのでしょうか。これが役立つ例です。COMでは、インターフェイスポインタをとして返す必要があるvoid** ppv
ため、明示的にキャストする必要があります
その後、より安全なC++キャストに置き換えることが提案されました
しかし、ここでさえ作ることは理にかなっていstatic_cast
ますか?this
から派生したクラスなIInterface
ので、簡単に書くことができます
またはのようなヘルパーを使用します
それで、時々誤用されて、場合static_cast
によってはこれに置き換えることができる(すべきですか?)というのは本当ですか、それとも私は何かを逃していますか?implicit_cast
編集: COMでキャストが必要であることは知っていますが、必ずしもそうである必要はありませんstatic_cast
。暗黙のキャストで十分です。
c++ - チェーン化された 2 つの static_cast が機能するのに、C++ に reinterpret_cast があるのはなぜですか?
にキャストA*
したいchar*
場合とその逆の場合、2 つの選択肢があります (つまり、私たちの多くは 2 つの選択肢があると考えています。どちらも機能しているように見えるためです!したがって、混乱が生じます!):
どちらも正常に動作します。
これでもうまくいきます!
では、連鎖した 2 つのジョブが機能するのに、なぜreinterpret_cast
C++ にあるのでしょうか。 static_cast
このトピックは、この投稿の下部にリストされているような以前のトピックと重複していると考える人もいるかもしれませんが、そうではありません。これらのトピックは理論的にしか議論していませんが、 が本当に必要な理由を示す例を 1 つも示していません。1 つの static_cast が失敗することに同意します。しかし、2つではどうですか?reintepret_cast
static_cast
2 つのチェーンの構文static_cast
が面倒に見える場合は、関数テンプレートを記述して、プログラマーにとってより使いやすくすることができます。
そして、これを次のように使用できます。
any_cast
また、役立つ可能性があるこの状況を参照してください: fstream 読み取りおよび書き込みメンバー関数の適切なキャスト。
だから私の質問は基本的に、
- なぜ
reinterpret_cast
C++にあるのですか? - 連鎖した2つ
static_cast
が同じ仕事を確実に失敗する例を1つでも教えてください。
c++ - ほとんどのポッドデータの reinterpret_cast (レイアウトの互換性は十分です)
と について学ぼうとしていstatic_cast
ますreinterpret_cast
。
私が正しければ、標準 (9.2.18) はreinterpret_cast
、ポッドのデータは安全であると言っています:
を使用して適切に変換された POD 構造体オブジェクトへのポインターは、
reinterpret_cast
その最初のメンバー (または、そのメンバーがビットフィールドの場合は、それが存在するユニット) を指し、その逆も同様です。[注: したがって、POD 構造体オブジェクト内に名前のないパディングが存在する場合がありますが、適切な配置を実現するために必要に応じて、先頭にはありません。— エンドノート]
私の質問は、これをどの程度厳密に解釈するかです。たとえば、レイアウトの互換性は十分ですか? もしそうでなければ、なぜですか?
私にとって、次の例は、厳密な「POD のみが有効である」という解釈が間違っているように見える例を示しています。
complex_base::m_data
また、保護されている場合 (complex_base
ポッドではないことを意味します) 、何が壊れる可能性がありますか? [編集: どうすれば自分自身を保護し、そのような破損を検出できますか]
レイアウトの互換性で十分であるように思えますが、これは標準が言っていることではないようです。
編集:答えてくれてありがとう。また、 http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2342.htmを見つけるのにも役立ちました
c++ - テンプレート化された代入演算子の質問
代入演算子で*this!=&rhsであることを確認したいと思います。ただし、コンパイルされません。助言がありますか?