問題タブ [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.
c++ - クラスのプライベート メソッドへのポインタを使用する名前付きパラメータ イディオム
おそらく実際には「従来型」ではないことをしているときに、C++ コンパイル エラーが発生しました。簡単にするために、使用しようとしているメカニズムを読みやすい方法で書き直し、同じ問題が発生することを確認しました。
まず、コードは次のとおりです。
test.h // - - C++ - -
test.cpp // - - C++ - -
ここにエラーがあります:
したがって、これが私が望むものを達成するための最良の方法であるかどうかはわかりません (おそらくそうではありませんが、他の提案があれば大歓迎です)。しかし、私の目標は、それを機能させるか、なぜ機能しないのかを正確に理解することです。そこから何かを学べるように!
基本的な考え方は次のとおりです。
- クラス「item」は、「init().has_funcPtr(&function_name)」のようにコンストラクターに連結されたクラス「init」のメソッド「has_funcPtr」を使用して、名前付きパラメーターイディオムで初期化できます。
- クラス "user" は、そのプライベート メソッド "func1" へのポインタを、型 "item" のプライベート メンバのプライベート メンバとして格納できます。
このようにして、オブジェクト「項目」の特定のメソッドが呼び出されたとき (簡単にするために、この長い部分はエラーとは関係がないため、ここには含めませんが、このコード スニペットの目的を説明するだけです)そのメソッドは、関数へのポインターを介して、何かを実行し、その親オブジェクト「ユーザー」のプライベートメソッドを呼び出すことができます(これが十分に明確であることを願っています...)。
現在、オブジェクトの初期化の順序に問題があると思いますが、どこでどのように修正すればよいかわかりません。特に、「func1」メソッドはクラス「user」のどのメンバーでも動作しないため、その参照を初期化リストで直接使用して「init」オブジェクトを初期化し、それを「item」にフィードできると考えました" 物体。
よろしくお願いします
c++ - クラス内で初期化するために const char* 静的フィールドを constexpr にする必要があるのはなぜですか?
次のコードがあります。
マークされた行は私に次のエラーを与えます:
エラー: 非整数型の静的データ メンバー 'const char* st::str' のクラス内初期化に 'constexpr' が必要です [-fpermissive]
私がそれに追加constexpr
すると、それはすべてダンディです。
なぜこのようになっているのですか?非プレーン タイプ (std::string
またはユーザー定義タイプなど) の初期化はクラス本体で許可されていないためconst char*
、constexpr
c++ - 配列メンバー C++ 11 のクラスの既定の初期化子
C++11でメンバー配列をデフォルトで初期化するにはどうすればよいですか? 私はバウンドを提供する必要があるようです。
正常にコンパイルされます。しかし、境界を省略すると、コンパイラ エラーが発生します。
エラー: 'const char* [0]' const char* num2letter[]{" ", "", "abc", "def", "ghi", "jkl", "mno", "pqrs" の初期化子が多すぎます、「tuv」、「wxyz」};
コンパイラは、集約初期化を使用したローカル配列定義の場合と同じように境界を推測できないのはなぜですか?
c++ - クラス内初期化メンバーのデフォルト値を取得する
クラス内初期化を使用して定義されたメンバーのデフォルト値を直接取得する方法はありますか? 例えば:
基本的に、デフォルト値を含む宣言全体を「コピー」するもの ( decltypeに似ています)。そのようなものは存在しますか?
c++ - C ++初期化クラスのメンバー変数は、他のメンバー変数に依存します
theta
基本的に、別のクラスメンバーによって初期化されるが適切に初期化される非静的メンバー。次に、ご覧のvalley_max
とおりによって初期化さtheta
れます。現在、すべてが正常に機能しています。次に、境界が である配列を初期化しますvalley_max
。まず、エラーが発生しました:
非静的データ メンバーの無効な使用
その後、ご覧のとおり追加static const int valley_max
します。しかし、次のようなエラーが発生しました:
バインドされた配列は、']' トークンの前の整数定数ではありません
別のメンバー変数によって初期化されたメンバー変数によって初期化された境界を持つ配列を初期化できるかどうか疑問に思っています。
ご協力いただきありがとうございます。
AP_Tmxk_VFH.cpp
AP_Tmxk_VFH.h