問題タブ [initialization-list]
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++ - 静的初期化リストの前に変数を前処理する
初期化リストに値を渡す前に、前処理アクティビティを実行したいと考えています。
(例: アサーション チェックを行うため)
ここに私の質問の文脈があります:私が持っていると仮定して、
と
15行目でどうなるか。初期化リストを呼び出して初期化する直前b_obj (b_value)
- input_value へ
input_value の値を操作 (チェックまたは前処理) したい ??
どうすればこれを達成できますか? Java では、初期化ブロックのようなものがあります。
私はすでに考えました-
クラス A と B の外部に関数を作成し、A のオブジェクトを作成する直前に、「input_value」で初期化して、その値を前処理します。(ただし、これは疎結合の概念に違反します)
親クラスを「Aの親」にしてクラスAにし、クラスAにそれを拡張させ、親コンストラクターが初期化リストの前に呼び出されるため、そのクラスで前処理を行いますか? 私はこれを試したことがないので、それが正しいアプローチであるかどうかはわかりません。
c++ - 初期化リストの initializer_list
で基本クラスを初期化したいstd::initializer_list
。
2番目のコンストラクターのGCCエラーは
エラー: 配列は中かっこで囲まれた初期化子で初期化する必要があります
私が欲しいのは、このようなinitializer_listで新しいAインスタンスを初期化することです
そしてそれを基底クラスに渡します。
c++ - 別のクラスでオブジェクトの配列を初期化する方法
ゲーム オブジェクトを制御するためのメイン クラスが「inGame」であるゲームを作成しています。「inGame」内に構成された他のいくつかのカスタムメイドのクラスがあります。
お気に入り、
しかし今、私は 3 匹のマウスが欲しいとしましょう。だから私はm1 [3]またはおそらくベクトルを考えました。
だから私は次のことを試しました:
std::vector m1 を使用する場合でも、ゲーム内のデフォルト コンストラクターを使用して初期化する方法を教えてください。コンストラクター内に書いているでしょうか?
より良いアプローチはどれですか?主に私はただやります:
ありがとう。
アップデート:
運が悪い
"m1 {" の後に "expected a )" というエラーがあります。そして m1 { "}<--" は ";" を期待していました
c++ - メンバがテンプレート クラスの場合、初期化リスト内のクラスのメンバを初期化します
[解決済み]: 問題はテンプレート クラスの初期化ではなく、テンプレート クラス コンストラクター内で未定義のマクロを使用するというコード固有の問題でした。コンパイラ エラーは、未定義のシンボルについては文句を言いませんでしたが、(誤って) ラムダに関連していました。
答えを探しましたが、正確な答えが見つかりませんでした。最も近い答えはここにあります:C++は明示的なテンプレートコンストラクターを呼び出しますが、それが私の質問に完全に関連しているかどうかはわかりません. 私の質問は、メンバーがテンプレート クラスの場合、初期化リストで構造体 B のメンバーを初期化するにはどうすればよいですか?
ヘッダー ClassA.h:
ヘッダー StructB.h:
コンパイラーはこのエラーに文句を言います (およびその他のエラーがいくつかあります。問題があれば投稿できます)。
エラー C3493: 既定のキャプチャ モードが指定されていないため、'number' を暗黙的にキャプチャすることはできません
これを行う方法、またはおそらくいくつかの回避策はありますか?
前もって感謝します:D
c++ - コンストラクター初期化リストの制約チェック
この状況は、コンストラクターのパラメーターに制約を作成する方法に関連していますが、少し異なります。
デフォルトで構築できないメンバーを初期化したいが、構築する前に制約をチェックする必要がある。
例:
(これは単なる例であることに注意してください。この特定の状況で代わりに符号なし整数を使用する必要があるかどうかは議論の余地がありますが、問題はコンストラクターをチェックインする一般的なケースに関するものです)
次のクラスがあります。
コンストラクターは、整数引数の有効性をチェックする必要があります。
Buffer
howにはデフォルトのコンストラクタがなく、実際のコンストラクタはであることに注意してくださいnoexcept
。つまり、エラーをキャッチする方法がありません。
整数の引数が負の場合、surface_
すでにホースが入っています。制約された値を使用する前に、制約チェックを行う方がよいでしょう。出来ますか?
c++ - C++: 初期化リストのコンパイルでエラーが見つかりませんが、起動時にクラッシュが発生します
次の初期化リストで何が間違っているのかを理解するのに助けが必要です。「Room」クラスにデフォルトのコンストラクターがないデータメンバーオブジェクト「RoomResources」を初期化するために使用しています。
これで正しくコンパイルされ、問題ないように思えますが、プログラムを起動するとクラッシュします。この初期化リストを使用せず、代わりにデフォルトのコンストラクターを使用して「RoomResources」オブジェクトを使用しようとしたため、この初期化リストが問題であることはわかっていますが、プログラムは正常に実行されています。
プログラムをデバッグすると、次のエラーが表示されます。 -4.0.3-1-mingw32-src/src/libcrt/crt/main.c""
一部のオブジェクトが、プログラムでまだ使用できないコードまたはデータを呼び出そうとしているようですが、コードに問題が見られません。ありがとうございました。
編集: これが私の GetAppRenderer メソッドの定義です:
c++ - C++ クラスで複雑な関数を使用して const メンバーを初期化する
3D グリッドで動作するプログラムがあります。このグリッドには、次のような独自のクラス オブジェクト Grid があります (簡略化されたバージョン)。
私が今やりたいことは、変数 i、j、k を const int として設定できるようにして、他の関数で誤って混乱させないようにすることです。ただし、ファイルから読み取る必要があるため、メンバー初期化子リストに簡単に設定することはできません。既存の議論を閲覧してきましたが、この問題に関する正確な議論を見つけることができませんでした。
それらをconstとして設定し、複雑な関数を使用してデータを取得できるソリューションはありますか? 私の実際のアプリケーションでは、もちろん、初期化後に変更することを許可されていない、もっと多くの変数を読み取る必要があります。
c++ - 初期化子リストコンストラクターを呼び出すさまざまな方法
初期化子リストコンストラクターの使用法について、次の例を検討してください。
それらの間に(わずかでも)違いはありますか?
大規模なプロジェクトで標準を定義する必要がある場合、どのスタイルを選択しますか?
私は最初のスタイルを好みます。また、最初のスタイルは他のプログラミング言語になじみがあるように見えます。