問題タブ [in-class-initialization]

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 に答える
127 参照

c++ - クラスのプライベート メソッドへのポインタを使用する名前付きパラメータ イディオム

おそらく実際には「従来型」ではないことをしているときに、C++ コンパイル エラーが発生しました。簡単にするために、使用しようとしているメカニズムを読みやすい方法で書き直し、同じ問題が発生することを確認しました。

まず、コードは次のとおりです。

test.h // - - C++ - -

test.cpp // - - C++ - -

ここにエラーがあります:

したがって、これが私が望むものを達成するための最良の方法であるかどうかはわかりません (おそらくそうではありませんが、他の提案があれば大歓迎です)。しかし、私の目標は、それを機能させるか、なぜ機能しないのかを正確に理解することです。そこから何かを学べるように!

基本的な考え方は次のとおりです。

  • クラス「item」は、「init().has_funcPtr(&function_name)」のようにコンストラクターに連結されたクラス「init」のメソッド「has_funcPtr」を使用して、名前付きパラメーターイディオムで初期化できます。
  • クラス "user" は、そのプライベート メソッド "func1" へのポインタを、型 "item" のプライベート メンバのプライベート メンバとして格納できます。

このようにして、オブジェクト「項目」の特定のメソッドが呼び出されたとき (簡単にするために、この長い部分はエラーとは関係がないため、ここには含めませんが、このコード スニペットの目的を説明するだけです)そのメソッドは、関数へのポインターを介して、何かを実行し、その親オブジェクト「ユーザー」のプライベートメソッドを呼び出すことができます(これが十分に明確であることを願っています...)。

現在、オブジェクトの初期化の順序に問題があると思いますが、どこでどのように修正すればよいかわかりません。特に、「func1」メソッドはクラス「user」のどのメンバーでも動作しないため、その参照を初期化リストで直接使用して「init」オブジェクトを初期化し、それを「item」にフィードできると考えました" 物体。

よろしくお願いします

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

c++ - クラス内で初期化するために const char* 静的フィールドを constexpr にする必要があるのはなぜですか?

次のコードがあります。

マークされた行は私に次のエラーを与えます:

エラー: 非整数型の静的データ メンバー 'const char* st::str' のクラス内初期化に 'constexpr' が必要です [-fpermissive]

私がそれに追加constexprすると、それはすべてダンディです。

なぜこのようになっているのですか?非プレーン タイプ (std::stringまたはユーザー定義タイプなど) の初期化はクラス本体で許可されていないためconst char*constexpr

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

c++ - 配列メンバー C++ 11 のクラスの既定の初期化子

C++11でメンバー配列をデフォルトで初期化するにはどうすればよいですか? 私はバウンドを提供する必要があるようです。

正常にコンパイルされます。しかし、境界を省略すると、コンパイラ エラーが発生します。

エラー: 'const char* [0]' const char* num2letter[]{" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs" の初期化子が多すぎます、「tuv」、「wxyz」};

コンパイラは、集約初期化を使用したローカル配列定義の場合と同じように境界を推測できないのはなぜですか?

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

c++ - クラス内初期化メンバーのデフォルト値を取得する

クラス内初期化を使用して定義されたメンバーのデフォルト値を直接取得する方法はありますか? 例えば:

基本的に、デフォルト値を含む宣言全体を「コピー」するもの ( decltypeに似ています)。そのようなものは存在しますか?

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

c++ - C ++初期化クラスのメンバー変数は、他のメンバー変数に依存します

theta基本的に、別のクラスメンバーによって初期化されるが適切に初期化される非静的メンバー。次に、ご覧のvalley_maxとおりによって初期化さthetaれます。現在、すべてが正常に機能しています。次に、境界が である配列を初期化しますvalley_max。まず、エラーが発生しました:

非静的データ メンバーの無効な使用

その後、ご覧のとおり追加static const int valley_maxします。しかし、次のようなエラーが発生しました:

バインドされた配列は、']' トークンの前の整数定数ではありません

別のメンバー変数によって初期化されたメンバー変数によって初期化された境界を持つ配列を初期化できるかどうか疑問に思っています。
ご協力いただきありがとうございます。

AP_Tmxk_VFH.cpp

AP_Tmxk_VFH.h