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

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

c++ - C ++ Const_Castは新しい変数を誘導しますか?

こんにちは、みんな!

出力によると、* p2とaの値は異なり、* p2は5、aは2です。

ただし、p2と&aは同じです。よくわかりません...

これがどこにあるのか理解するのを手伝ってくれませんか。

どうもありがとうございます!

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

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ですか?
0 投票する
3 に答える
7264 参照

c++ - char * と const_cast の違いは何ですか(文字列.c_str())

外部ライブラリを使用して、2 つのアプリ間の udp (OSC) 通信を処理します。送信されるメッセージをフォーマットするために、ライブラリは char* を想定していますが、変換する必要がある UI から文字列を取得します。

コードの他の部分を扱っている間、udp の部分は次のようにハードコードされていました。

そしてうまくいっていました。私の文字列で動作させるのは簡単だと思い、次のように書きました:

しかし、正しくフォーマットされたメッセージを受信して​​いた最初の例とは異なり、意味不明な文字しか受信しません。誰かがそれがどこから来るのか知っていますか?

ありがとう!

マチュー

EDIT:私が使用するコード:OSCValが変更されるたびにメッセージを送信する方法:

OSC パターンを変更する必要がある場合は、これを次のように呼び出します。

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

c++ - ファクトリ モデルで const_cast を使用する

私の命名法が間違っている場合は、許してください/修正してください。

の使い方がいまいち理解できませんでしたconst_cast。一般的に言えば、const-correct ではないレガシー関数を使用していない限りconst_cast、使用する必要がある場合、クラス/メソッドにはおそらく根本的な欠陥があるように思えます。ただし、その使用が適切な場合に遭遇した可能性があります。私は、構築中に割り当てられ、オブジェクトの耐用年数の間一定のままであるいくつかのメンバーを持つ大規模なクラスを持っています。

これらのオブジェクトは頻繁に破棄および構築されるため、ファクトリ モデルと呼ばれるものを試してみたいと思います。オブジェクトを作成/破棄する代わりに、割り当てられていないオブジェクトのキャッシュを取得/返したいと考えています。例(もちろん単純化されています):

であるため、新しい名前を割り当てることはできませんconst。これは良いケースconst_castですか、それとも明らかな代替案がありませんか? 使用const_castするとパフォーマンスが低下しますか?

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

c++ - const_cast と混同しました

私はちょうどいくつかのC ++の概念を学んでいて、上記の2つの概念に出会いました。上記の2つのサンプルプログラムでエラーとしてマークされた概念を誰か説明してもらえますか?

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

c++ - 「this」からconstnessをキャストしてから、メンバー値を変更すると、未定義の動作が発生しますか?

別の質問のいくつかの回答に対する私のコメントへの応答で、誰かが次のようなことを示唆しています

constオブジェクトが変更されたため、未定義の動作を呼び出します。これは本当ですか?そうでない場合は、これを許可するC ++標準を引用してください(どの標準から引用するかを記載してください)。

mutable価値があるのは、 1つまたは2つのメソッドだけでメンバー変数に書き込む必要がある場合にメンバー変数を作成しないようにするために、常にこのアプローチを使用してきました(を使用すると、すべてのmutableメソッドに書き込み可能になるため)。

0 投票する
4 に答える
2321 参照

c++ - static_castとポインタへの参照

なぜこれがコンパイルされないのか誰か教えてもらえますか?

ここで、静的キャストを次のように置き換えると、

その後、コンパイルします。

編集:コンパイラが独立した型として扱い、そうでない場合はこれが機能するA*ことは明らかです。B*問題は、なぜそれが望ましいのかということです。

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

c++ - 変数から定数性を取り除く

変数 (char*) から const 性を削除しようとしていますが、何らかの理由で値を変更しようとすると、const 変数の元の値が変更されません。

現在、str2 の値は変更されていますが、str1 の元の値は同じままです。Google で調べましたが、明確な答えが見つかりませんでした。

const_cast を使用して値を変更する場合、const 変数の元も変更する必要がありますか?

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

c++ - 同じクラス内の別のメンバーを参照するように参照メンバーを初期化するより良い方法はありますか

誰かが何かを言う前に、これはおそらく推奨されないことを知っていますが、それを行うためのより良い方法や、奇妙なことを超えない理由があるかどうかはまだ興味があります.

クラス内の意味的に名前が付けられたメンバーを使用して配列の要素に直接アクセスしたいが、配列を反復処理でき、ゲッターまたはセッターメソッドを呼び出し/作成する必要がないため、これを調べ始めました。

このようなクラス定義があります。

そして、このようなコンストラクタ。私の質問はです。コンストラクターで行っていることを行うより良い方法はありますか?

編集

私はばかです... ジョナサン・ウェイクリーが言ったようにすればいいのです。

私がそれを試したとき、私は以前に他の問題を抱えていたと思います。しかたがない。