問題タブ [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 投票する
7 に答える
32839 参照

c++ - C++ は、仮想ベース A を介してベース A から派生型 B に変換できません

私は3つのクラスを持っています:

A* から B* への静的キャストを試行すると、次のエラーが発生します。

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

c++ - Derived*const を Base*const にキャストします

編集 - 質問をもう少し文脈に入れます。

与えられた:

実装しようとすると

それは動作しません。const_castconstnessを変更したくないのでaは意味がありません。また、指しているものを変更していないので、なぜg ++が教えてくれるのですか

? キャストを省略すると、

誰かがこれに光を当てることができれば、それは大歓迎です。

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

c++ - C++sdiアプリケーションでのStatic_castコンパイラエラー

メニューの使用状況の追跡を追加しようとしている小さなSDIアプリケーションがあります。ユーザーが特定のメニュー項目を選択した回数。

一部のメニュー項目はViewコンポーネント(DemoView.cpp)によって処理され、その他のメニュー項目はメインアプリ(DemoApp.cpp)によって処理されます。追跡構造はメインアプリで定義されているので、メニュー項目(ビューによって処理される)が選択されたときに、ビューの親に特別なメッセージを通知する必要があると思います。

これが正しければ、私の問題は、適切なON_MESSAGEコマンドを作成できないことです。このように見えます:

ここで、OnIncreaseFreq()は次のように定義されています。

ただし、このエラーが発生します:

私はこれで助けていただければ幸いです

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

c++ - qobject_castはどのように機能しますか?

Qtで次のコードを見つけましたが、ここで何が起こっているのか少し混乱しています。

特に何をreinterpret_cast<T>(0)しますか?

誰か説明したいですか?

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

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に変換するためのアイデアはありますか?
ありがとう

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

c++ - 型キャストに関する初歩的な質問

乱数ジェネレーターの数値に math.h を使用するつもりでした。double では math.h 関数しか使用できないようです。そう:

「value」に「currentValue」の値、または転送される数値の値の少なくとも一部を指定しようとしています。私は乱数ジェネレーターを使用しているので、数値全体が転送されてもかまいません。機能するために必要なのはその一部だけです。

私はある時点で持っています:

** 示されていないコードを通じて、それらの値が設定されます。**

後で、currentValue に移動するために値の一部が必要です。

私は試した:

どんな助けでも大歓迎です。

助けてくれてありがとう。問題は解決された。

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

c++ - static_castは誤用されていますか?

利用可能な最も安全なC++キャストであるため、私はさまざまな感情を抱いてstatic_castいますが、同時に安全な変換と安全でない変換の両方を許可するため、実際に安全であるか、UBにつながる可能性があるか(キャスト時など)を判断するためのコンテキストを知る必要がありますサブクラスへ)。

では、なぜより安全な明示的なキャストがないのでしょうか。これが役立つ例です。COMでは、インターフェイスポインタをとして返す必要があるvoid** ppvため、明示的にキャストする必要があります

その後、より安全なC++キャストに置き換えることが提案されました

しかし、ここでさえ作ることは理にかなっていstatic_castますか?thisから派生したクラスなIInterfaceので、簡単に書くことができます

またはのようなヘルパーを使用します

それで、時々誤用されて、場合static_castによってはこれに置き換えることができる(すべきですか?)というのは本当ですか、それとも私は何かを逃していますか?implicit_cast

編集: COMでキャストが必要であることは知っていますが、必ずしもそうである必要はありませんstatic_cast。暗黙のキャストで十分です。

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

c++ - チェーン化された 2 つの static_cast が機能するのに、C++ に reinterpret_cast があるのはなぜですか?

にキャストA*したいchar*場合とその逆の場合、2 つの選択肢があります (つまり、私たちの多くは 2 つの選択肢があると考えています。どちらも機能しているように見えるためです!したがって、混乱が生じます!):

どちらも正常に動作します。

これでもうまくいきます!

では、連鎖した 2 つのジョブが機能するのに、なぜreinterpret_castC++ にあるのでしょうか。 static_cast

このトピックは、この投稿の下部にリストされているような以前のトピックと重複していると考える人もいるかもしれませんが、そうではありません。これらのトピックは理論的にしか議論していませんが、 が本当に必要な理由を示す例を 1 つも示してませ。1 つの static_cast が失敗することに同意します。しかし、2つではどうですか?reintepret_cast static_cast

2 つのチェーンの構文static_castが面倒に見える場合は、関数テンプレートを記述して、プログラマーにとってより使いやすくすることができます。

そして、これを次のように使用できます。

any_castまた、役立つ可能性があるこの状況を参照してください: fstream 読み取りおよび書き込みメンバー関数の適切なキャスト

だから私の質問は基本的に、

  • なぜreinterpret_castC++にあるのですか?
  • 連鎖した2つ static_castが同じ仕事を確実に失敗する例を1つでも教えてください。

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

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を見つけるのにも役立ちました

0 投票する
5 に答える
956 参照

c++ - テンプレート化された代入演算子の質問

代入演算子で*this!=&rhsであることを確認したいと思います。ただし、コンパイルされません。助言がありますか?