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

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

c++ - Qtで継承されたクラスの初期化に何を入れることができますか

次のように、videoというQtクラスを作成しました。

video.h

video.cpp

次のエラーが発生しました:

このクラスは、( QDjangoQDjangoModelに含まれている)という名前のクラスを拡張し、を拡張します。Qtクリエーターでクラスを作成すると、次のテンプレートが作成されます。QDjangoModelQObject

親のコンストラクターだと思っ: QObject(parent)たので、置き換えました: QDjangoModel(parent)が、間違っているようです。

質問:

Q1。どういう: QObject(parent)意味ですか?

私は初期化リストについてグーグルで検索しました、そして私は次のコードの意味を理解しています:

この場合、

コンストラクターが実行されたときに実行されますよね?

しかし、私の場合、

また

意味しない

また

明らかに、私の理解はm_name(name)ケースには当てはまりませんQObject(parent)

Q2。このエラーを修正するにはどうすればよいですか?

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

c++ - C++ - インスタンスによるクラス メンバーの初期化

私の質問は次のとおりです。

これで、Bar を vairable メンバーとして持つ別のクラスができました。

BarUser のコンストラクターを作成したいのですが、整数として 3 を持つ Foo メンバーで Bar を初期化したいと考えています。すなわち:

ただし、クラスメンバーとして Bar があるため、このコードをすべて初期化リストに書き込むことはできません... つまり、次のとおりです。

代入演算子が Bar に許可されていないとします - 意図したとおりに初期化するにはどうすればよいですか?

ありがとう!

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

c++ - C++ のコンストラクターの初期化リストで char の配列を初期化する

このような初期化を使用しても問題ありませんか?

この?

どちらもgcc 4.7.2でエラーを出します:

エラー: 初期化子として配列が使用されました

コモーは両方をコンパイルします。

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

c++ - C++ コンストラクターと初期化リストの速度比較

コンストラクターと初期化リストの間で実行時間に違いはありますか?(またはコーディングの好みの問題ですか)。頻繁に作成する必要があるオブジェクトのセットがあり、コンストラクターの代わりに初期化リストを使用することでパフォーマンスが向上するかどうかを知りたいです。

クラス A のインスタンスを 100 万個作成し、クラス B の別の 100 万個のインスタンスを作成する場合、どちらを選択するのがよいでしょうか (オブジェクトはネットワーク内で生成されたパケットを表すため、これらの数値が表示されます)。

コンストラクターのいずれかがプリミティブ型の他のコンストラクターよりも高速である場合 (例のように)、a と b を型に置き換えると高速になりますか?

タイプ例:

0 投票する
8 に答える
8360 参照

c++ - C++ - クラス メンバーを初期化する前に関数を実行する

2 つのリソース管理クラスがDeviceContextあり、OpenGLContextどちらも のメンバーですclass DisplayOpenGL。リソースの有効期間は に関連付けられていDisplayOpenGLます。初期化は次のようになります (疑似コード):

DisplayOpenGL問題は SetPixelFormat() の呼び出しです。これは、 c'torの初期化リストでは実行できないためです。

私が見ることができる解決策:

  • 挿入m_dummy(m_device.SetPixelFormat())- SetPixelFormat() には retval がないため、機能しません。(retval がある場合、これを行う必要がありますか?)
  • unique_ptr<OpenGLContext> m_opengl;の代わりに使用しOpenGLContext m_opengl;ます。
    次に として初期化しm_opengl()、 c'tor 本体で SetPixelFormat() を呼び出して使用しますm_opengl.reset(new OpenGLContext);
  • 担当 SetPixelFormat()者からの電話DeviceContext

これらのソリューションのどれが望ましいですか?またその理由は? 不足しているものはありますか?

問題があれば、Windows で Visual Studio 2010 Express を使用しています。

編集:私は主に、これらの方法のいずれかを決定する際のトレードオフに関心があります。

  • m_dummy()機能しませんし、機能したとしてもエレガントではないようです
  • unique_ptr<X>は私にとって興味深いものです。「通常の」X m_xメンバーの代わりに使用するのはいつですか? 2 つの方法は、初期化の問題を除けば、機能的にほぼ同等のようです。
  • c'torSetPixelFormat()からの呼び出しはDeviceContext確かに機能しますが、私には不潔に感じます。DeviceContextユーザーにランダムなピクセル形式のポリシーを課すのではなく、リソースを管理してその使用を有効にする必要があります。
  • stijn's InitDev()は、最もクリーンなソリューションのように見えます。

とにかく、そのような場合、ほとんど常にスマートポインターベースのソリューションが必要ですか?

0 投票する
0 に答える
458 参照

c++ - FILE*、fopen_s、および初期化リスト

私はこのように宣言されたクラスを持っています(関連する部分のみを示しています):

コンストラクターはファイルを開きます。

次のように別のクラスで使用されます。

Y のコンストラクターでは、myX が初期化リストを介して初期化され、メソッドが呼び出されます。

X のコンストラクターをステップ実行すると、ストリームが割り当てられ、エラーなしで書き込まれます。Y のコンストラクターの左中かっこにブレークポイントを配置すると、ストリームは X のコンストラクター中と同じ値になります。ただし、Y のコンストラクターの本体にステップ インすると、ストリームの値が変化し、次の使用時にストリームが使用されます。 (たとえば、init() 内で) アクセス違反が発生します。Y を直接参照ではなく X へのポインターを格納するように変更し、X をヒープに割り当てると、すべて正常に動作します。fopen_s が FILE* を割り当てている場所に関係があると思われますが、確認できません。なぜこれが失敗するのか誰でも説明できますか?

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

c++ - コンストラクタ初期化リストのメンバー配列を初期化しています(C ++ 11より前)

私の知る限り、C ++ 11以前は、コンストラクター初期化リストでメンバー配列を初期化する唯一の方法は、次のようにすることでした。

しかし、私は何人かの人々に、このメソッドに眉をひそめていると言ってもらいましたfor。コンストラクターの本体のループでゼロ初期化する方が安全で読みやすいでしょう。

まだC++11をサポートしていないので、初期化子リストなどを使用できません。コンストラクター初期化子リストでメンバー配列を初期化することを思いとどまらせるガイドラインはありますか?

また、テストはノーを示していますが、多次元配列にこの構文を使用しても問題はないはずですよね?(たとえば、これは特定のコンパイラが何らかの理由で台無しにする標準の一部ではありません...)

これが主観的な質問であるという意味ではありません。上記の構文を使用する/使用しない正当な理由があるかどうかを知りたいだけです。

助けてくれてありがとう。

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

c++ - 初期化リストなしでC ++のヘッダーファイルのconst intに値を割り当てる

クラスで非公開にしたい 17 個の整数定数を取得しました。初期化リストを使用する必要は本当にありますか?

ヘッダー ファイルの定数に値を割り当てることができるとどこかで読みましたが、機能していないようです。次のエラー メッセージが表示されます。

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

c++ - コンストラクター初期化リストの文字列ストリーム参照メンバーを何も初期化しない

null を参照するか、初期化されていないままにしておきたいと言って、stringstream 参照メンバーを何も初期化しようとしました。

.hpp ファイル

.cpp ファイル

コンパイラは次のように出力します: エラー 1 エラー C2758: 'Class::css' : コンストラクターのベース/メンバー初期化リストで初期化する必要があります

初期化リスト内のすべての変数を初期化する必要がありますか? コンストラクターに stringstream 参照を渡していないため、どうすれば初期化できますか? または、初期化したくない場合は、空白のままにします。どうすればいいですか?

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

c# - 基本メンバー初期化セクションC#?

基本メンバーの初期化セクションはC#に存在しますか?検索と検索を試みましたが、 Listクラスの初期化に関する質問を出し続けました。私が参照している初期化リストは、ここにある例のようになります。

これを行う理由の1つは、クラスの定数を初期化することです。私は基本的に、次のことができるかどうかを理解しようとしています。

繰り返しますが、私はこれをC ++ではなくC#で実行しようとしています。何かご意見は?