問題タブ [class-template]

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

c++ - is_array テンプレート クラスの評価に関する混乱

次のプログラムを検討してください (ライブデモはこちらを参照してください。 )

抽象クラスのオブジェクトを作成できないことはわかっています。ここで T は抽象的であるため、構造体 T のオブジェクトを作成することはできません。ただし、次のステートメントを検討してください。

エラーが発生するのはなぜですか?このステートメントは、指定された型が配列かどうかのみをチェックします。Tが配列であり、静的メンバーの値がvalue評価されるtrue場合、オブジェクトの配列が作成されるということですか? しかし、なぜここで配列を作成する必要があるのでしょうか? その配列を使用できない場合、配列を作成する必要は何ですか? これは単なるメモリの浪費ではありませんか?

では、なぜ次のステートメントでコンパイラ エラーが発生しないのでしょうか。

ここで私が理解していることは間違っていますか?私を助けてください。

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

c++ - C ++:テンプレート化された型に名前付きメンバーが存在する場合に、テンプレート化されたクラスにクラス関数を提供しますか?

私は次のことをしようとしています: テンプレート化されたクラスは、テンプレート化された型に特定の名前のメンバー変数が含まれているかどうかに応じて、いくつかの関数を提供する必要があります。例として、テンプレート化された構造体/クラスに「id」というメンバーがある場合にのみ「printid()」を提供する必要がある次の擬似コード:

SFINAE、trait、std::enable_if、StackOverflow を掘り下げてみると、何とかできると思います。しかし、enable_if と、クラスに特定のメンバー変数があるかどうかを検出する方法に関する質問の次のスニペットとの組み合わせに失敗しました。:

どんな助けでも感謝します。

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

c++ - テンプレート クラスでオーバーロードされた operator+ のパラメーターとしてオブジェクトを渡す

オーバーロードされた operator+ のパラメーターとしてオブジェクトを渡そうとしていますが (クラスはテンプレート クラスです)、次のようなエラーが表示されます。

これは私のクラスです:

これは私のオーバーロードされた+メソッドです:

と思いました

引数リストとしては十分でしょう。私は何を間違っていますか?

私のメインでは、2 つのオブジェクトを作成しているだけで (2 番目のオブジェクトはコピー コンストラクターを呼び出します)、それらを一緒に追加しようとします。

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

c++ - テンプレート クラスがコンストラクターの登録に失敗しました。なぜですか?

C++ プログラムで、開発中のクラスでテンプレートを使用しようとすると、コンパイラがソースで宣言されたクラス コンストラクターを登録しません。

テンプレートを削除すると問題なくコンパイルされますが、それ以外は、過去 1 時間で間違っている可能性がある点で進歩がありませんでした (テンプレートを宣言する場所と方法、および名前空間の構文を試してみました)。

では、C++ について何が理解できていないのでしょうか。

rondel.h:

ロンデル.cpp:

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

c++ - クラステンプレートを含むこのプログラムで単一引数コンストラクターを呼び出す方法は?

これは、クラス テンプレートを使い始めるために私が書いたコードです。

このコードは、「3 + C2」のような整数値を使用しようとするとエラーが表示される場合を除いて、すべて正常に機能します。'3+C2' のテンプレートを使用せずに同じコードを検討すると、フレンド関数 operator+(Complex a,Complex b) が呼び出され、3 がオブジェクト a にコピーされて単一引数コンストラクターが呼び出され、3 が実数部分に割り当てられます。複雑なクラス。クラステンプレートが使用されているときに同じことを行うにはどうすればよいですか? クラステンプレートが使用されているときに、Complex オブジェクトの代わりに数値が operator+() 関数に渡されたときに単一引数コンストラクターを呼び出す方法は?

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

c++ - クラスの this ポインターをメンバー共有ポインターに保存する方法はありますか

私はこのような構造を持っています:

フー。

Foo.inl

基本的に私がやろうとしているのは、 add 関数を使用して同じタイプの任意のオブジェクトを渡すことです。要素数が 256 要素に達し、渡されたその型のスマート ポインターの内部配列がいっぱいになったら、このクラスのインスタンス化されたオブジェクトの現在のインスタンスを保存し、それをベクターにプッシュし、渡される次のオブジェクトは新しいオブジェクトに属します。または次のインスタンスが作成されますが、それ以降のすべてのインスタンスは依然として元のオブジェクトの一部です。したがって、256 の各配列が満たされると、いわばリンクされたリストのように機能しますが、それはより連鎖的な効果です。このインスタンスの現在の状態を保存することに行き詰まっています。