問題タブ [const-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 ++ Const_Castは新しい変数を誘導しますか?
こんにちは、みんな!
出力によると、* p2とaの値は異なり、* p2は5、aは2です。
ただし、p2と&aは同じです。よくわかりません...
これがどこにあるのか理解するのを手伝ってくれませんか。
どうもありがとうございます!
c++ - C ++では、クラスメンバーとしての参照はconstまたはnon-constでなければなりません。
次の最小限の例を考えてみましょう。
これはコンパイルされません。下からの全体の出力g++ -Wall
。
理由は明らかです。constキーワードは8行目のキャストに腹を立てています。問題:Dataクラスが必要な場合もありますが、が必要な場合もありstd::vector
ますconst std::vector
。2つのクラスがあるように:1つはへの読み取りData
用、もう1つはからの読み取り用Data
です。ただし、ほとんど冗長な機能を持つ2つのデータクラスを作成するのは好きではありません。私の質問:
- 私がやろうとしていることをどのように達成できるかについて、良い解決策を教えていただけます
main()
か?C++11ソリューションも大歓迎です:) iterator
これがとの理由const_iterator
ですか?
c++ - char * と const_cast の違いは何ですか(文字列.c_str())
外部ライブラリを使用して、2 つのアプリ間の udp (OSC) 通信を処理します。送信されるメッセージをフォーマットするために、ライブラリは char* を想定していますが、変換する必要がある UI から文字列を取得します。
コードの他の部分を扱っている間、udp の部分は次のようにハードコードされていました。
そしてうまくいっていました。私の文字列で動作させるのは簡単だと思い、次のように書きました:
しかし、正しくフォーマットされたメッセージを受信していた最初の例とは異なり、意味不明な文字しか受信しません。誰かがそれがどこから来るのか知っていますか?
ありがとう!
マチュー
EDIT:私が使用するコード:OSCValが変更されるたびにメッセージを送信する方法:
OSC パターンを変更する必要がある場合は、これを次のように呼び出します。
c++ - ファクトリ モデルで const_cast を使用する
私の命名法が間違っている場合は、許してください/修正してください。
の使い方がいまいち理解できませんでしたconst_cast
。一般的に言えば、const-correct ではないレガシー関数を使用していない限りconst_cast
、使用する必要がある場合、クラス/メソッドにはおそらく根本的な欠陥があるように思えます。ただし、その使用が適切な場合に遭遇した可能性があります。私は、構築中に割り当てられ、オブジェクトの耐用年数の間一定のままであるいくつかのメンバーを持つ大規模なクラスを持っています。
これらのオブジェクトは頻繁に破棄および構築されるため、ファクトリ モデルと呼ばれるものを試してみたいと思います。オブジェクトを作成/破棄する代わりに、割り当てられていないオブジェクトのキャッシュを取得/返したいと考えています。例(もちろん単純化されています):
であるため、新しい名前を割り当てることはできませんconst
。これは良いケースconst_cast
ですか、それとも明らかな代替案がありませんか? 使用const_cast
するとパフォーマンスが低下しますか?
c++ - const_cast と混同しました
私はちょうどいくつかのC ++の概念を学んでいて、上記の2つの概念に出会いました。上記の2つのサンプルプログラムでエラーとしてマークされた概念を誰か説明してもらえますか?
c++ - 「this」からconstnessをキャストしてから、メンバー値を変更すると、未定義の動作が発生しますか?
別の質問のいくつかの回答に対する私のコメントへの応答で、誰かが次のようなことを示唆しています
constオブジェクトが変更されたため、未定義の動作を呼び出します。これは本当ですか?そうでない場合は、これを許可するC ++標準を引用してください(どの標準から引用するかを記載してください)。
mutable
価値があるのは、 1つまたは2つのメソッドだけでメンバー変数に書き込む必要がある場合にメンバー変数を作成しないようにするために、常にこのアプローチを使用してきました(を使用すると、すべてのmutable
メソッドに書き込み可能になるため)。
c++ - static_castとポインタへの参照
なぜこれがコンパイルされないのか誰か教えてもらえますか?
ここで、静的キャストを次のように置き換えると、
その後、コンパイルします。
編集:コンパイラが独立した型として扱い、そうでない場合はこれが機能するA*
ことは明らかです。B*
問題は、なぜそれが望ましいのかということです。
c++ - 変数から定数性を取り除く
変数 (char*) から const 性を削除しようとしていますが、何らかの理由で値を変更しようとすると、const 変数の元の値が変更されません。
現在、str2 の値は変更されていますが、str1 の元の値は同じままです。Google で調べましたが、明確な答えが見つかりませんでした。
const_cast を使用して値を変更する場合、const 変数の元も変更する必要がありますか?
c++ - 同じクラス内の別のメンバーを参照するように参照メンバーを初期化するより良い方法はありますか
誰かが何かを言う前に、これはおそらく推奨されないことを知っていますが、それを行うためのより良い方法や、奇妙なことを超えない理由があるかどうかはまだ興味があります.
クラス内の意味的に名前が付けられたメンバーを使用して配列の要素に直接アクセスしたいが、配列を反復処理でき、ゲッターまたはセッターメソッドを呼び出し/作成する必要がないため、これを調べ始めました。
このようなクラス定義があります。
そして、このようなコンストラクタ。私の質問はです。コンストラクターで行っていることを行うより良い方法はありますか?
編集
私はばかです... ジョナサン・ウェイクリーが言ったようにすればいいのです。
私がそれを試したとき、私は以前に他の問題を抱えていたと思います。しかたがない。