問題タブ [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 に答える
860 参照

c++ - C++ 防御的プログラミング: 型安全性を備えたバッファーからの読み取り

私が所有していないクラスがあるとしましょう: DataBuffer. さまざまな get メンバー関数を提供します。

このバッファーに含まれる構造体から読み取る場合、フィールドの順序とサイズがわかっているので、将来のコード変更でエラーが発生する可能性を減らしたいと考えています。

次に、誰かが変更をチェックインして、ヘッダーを書き込む前に何かを行います。

以下は、変更に対してコードを強化するための受け入れ可能な方法ですか? 関数名を getByte や getUShort などに変更することはできません。DataBuffer から継承することもできますが、それはやり過ぎのように思えます。

目に安全ではないレガシーコードの例で更新されました:

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

c++ - unsigned を signed と解釈する

私は組み込みプラットフォーム (ARM) で作業しており、ビット パターンを扱うときは注意が必要です。この行が私の影響を超えているふりをしましょう:

署名なしと解釈すると、これは 206 になります。しかし、実際には署名されているため、-50に似ています。この値を署名済みとして引き続き使用するにはどうすればよいですか?

どちらでもない (すべての入力値に対して 0x10 または 0x00 になる)

ビットをそのままにしておきたいだけです。(bar == 0xCE)

逆に、ビットパターンを台無しにすることなく、負の数を表すビットパターンを符号なし変数に入れる方法に興味があります。私はGCCを使用しています。

0 投票する
6 に答える
20019 参照

c++ - 仮想継承が関係している場合、static_cast を使用してダウンキャストできないのはなぜですか?

次のコードを検討してください。

これは標準 ( ) で禁止されているため、実質的にから継承される[n3290: 5.2.9/2]ため、コードはコンパイルされません。を継承から削除すると、コードが有効になります。Derived Basevirtual

このルールが存在する技術的な理由は何ですか?

0 投票する
6 に答える
9513 参照

c++ - 多重継承を使用している場合、静的キャストはいつ安全ですか?

私は、何かがどのタイプであるかを知っている状況にいることに気づきました。Type は、3 つ (またはそれ以上) の継承レベルの 1 つです。私は返す factory を呼び出しますB*が、T は型の最高レベル (私のコードがそれが何であるかを知っている場合) または 2 番目のレベルのいずれかです。

とにかく、私はstatic_cast間違ったことをテンプレートで行いました。私の質問は、安全に静的キャストできるのはいつですか? そんな時ってありますか?この場合、動的キャストが無視する (そして null を返す) 奇抜なものとして T を誤って持っていると、むしろコンパイル エラーが発生するので、この場合に実行しました。ただし、正しい型がわかっている場合、ポインターが調整されないため、ポインターが正しくありません。この場合、静的キャストが許可される理由がまったくわかりません。

ダウン キャストに static_cast を安全に使用できるのはいつですか? 状況はありますか?今では、 a を使用するのは常に間違っているようですstatic_cast(目的がダウンキャストである場合)

わかりました、それを再現する方法を見つけました。

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

c++ - クラス オブジェクト ポインタをメッセージ キューの char * にパックする

POSIXメッセージキューを介してクラスオブジェクトポインタを適切かつ安全に渡すことは可能ですか?

例えば、

受信側では、reinterpret_castback to my Object?を実行します。

Linux ではメッセージ キューがファイル記述子を使用するため、これがどのように機能するのか興味があります。私は失敗しましたが、何か間違ったことをしているのではないかと思います。

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

c++ - 「関連のない型」間の static_cast

このクラス構造がある場合:

なぜこのキャストを実行できるのですか?

AとBは無関係ですよね?

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

c++ - C ++ポリモーフィズム、不完全なダウンキャスト

当たり障りのない基本型への参照を保持する配列があります。それを呼び出しましょうObject

Class1私はから派生ObjectClass2ましたClass1

ToString()私はキャストしObject *て電話しClass1 *ます

私の質問は、オブジェクトが実際にあるClass2が、具体的にはそれにダウンキャストされていない場合、この出力は1または2になるのでしょうか?キーワードはvirtual意図した効果を持っていますか?

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

c++ - チェーン化された static_cast はどのように明確に定義されていますか?

(5.2.9/10) 「cv1 void へのポインター」型の右辺値は、「cv2 T へのポインター」型の右辺値に変換できます。ここで、T はオブジェクト型であり、cv2 は cv-qualification と同じかそれ以上です。 cv-修飾より、cv1. 「cv void へのポインター」に変換され、元のポインター型に戻されるオブジェクトへのポインター型の値は、元の値になります。

from のキャストの結果はvoid*(int*元のポインター型) になっているので、次のキャストが有効になる理由は何ですか?

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

c++ - static_castはパブリックメンバー関数へのアクセスを制限しますか?

次の例のstatic_castで、「エラー:「A」は「B」のアクセスできないベースです」というメッセージが表示されます。

ただし、代わりにreinterpret_castまたはCスタイルの型キャスト((Derived *)this)-> funB()を使用すると、コンパイル/動作します。この動作は正しいですか?

使用したコンパイラ:gccバージョン4.5.1 20100924(Red Hat 4.5.1-4)(GCC)。

ありがとう。

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

c++ - テンプレート型変数を初期化するにはどうすればよいですか?

どちらの方がよいですか?

編集:Tプリミティブ型です。