問題タブ [template-classes]
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++ エラーが発生する
作成したテンプレート クラスの「+」、「-」、および「/」演算子をオーバーロードしようとしています。+ および - 演算子は完全に機能しますが、/ 演算子のオーバーロードによってエラーが発生します。
Visual Studio 2013 を使用しています
/ 演算子をオーバーロードして、2 つのセットの交点を決定したいと考えています。
意味:
ここに私が得ているエラーがあります
Error 1 error C2143: syntax error : missing ';' before '<'
Error 2 error C2460: '/' : uses 'Set<T>', which is being defined
Error 3 error C2433: '/' : 'friend' not permitted on data declarations
Error 4 error C2238: unexpected token(s) preceding ';'
Error 5 error C2365: '/' : redefinition; previous definition was 'data variable'
Error 6 error C2904: '/' : name already used for a template in the current scope
Error 7 error C2460: '/' : uses 'Set<int>', which is being defined
c++ - UML でのテンプレート クラスの描画
UML でテンプレート クラス図を描くのに問題があります。
UML では、テンプレート クラスの右上隅に小さな四角形が必要であることはわかっていますが、問題はそれをどのように描画するかです。
テンプレートクラスと呼ばれる特別なオプションはありますか、それとも手動で描画する必要がありますか?
ところで、Visio 2013 を使用してクラスを描画しています。
c++ - 特定のテンプレートのインスタンス化で、キーワード「明示的」をコンストラクターから削除できますか?
寸法の正確さを強制するテンプレート クラスを作成しようとしています (長さを時間で割ると速度が得られるなど)。
短編小説:「無次元」は可能なインスタンス化の 1 つです。すべてのインスタンス化を double から明示的に構築できるようにし、さらに "無次元" インスタンス化 (および無次元インスタンス化のみ) を double から暗黙的に構築できるようにすると便利です。
長い話:私のテンプレートクラスは次のようにレイアウトされています
このスタイルに従えば、は無次元量なので、aと doubleqty<0,0,0>
を足したり引いたりできるはずです。qty<0,0,0>
私は現在、宣言することでこれを強制しています
...しかし、それを定義するだけですqty<0,0,0>
。これは実行可能ですが、もっとうまくできると思います。double から への暗黙的な変換を許可した場合qty<0,0,0>
、 double と の追加はqty<0,0,0>
特別な処理を必要としません。ユーザーの間違いも、より示唆的なエラー メッセージを表示します --- 速度に double を追加しようとすると、関数が定義されていないと不平を言うのではなく、変換が不可能であることを示します (次元の非互換性の根底にある考えに到達します)。これにより、ユーザーはテンプレート クラスのエラーを疑う可能性があります)。
問題は、テンプレート パラメーターの他の組み合わせに対して暗黙的な構築を許可できないことです。そうした場合、qty と double の追加は常に成功します。ユーザーに次元の正確さについて考えさせ、加算する前に double 定数を適切な次元に明示的に変換するようにします (それが意図した操作である場合)。ただし、double からの明示的な構築を許可したい--- それがなければ、単純な宣言
厄介な変換関数が必要になります
つまり、私が本当に欲しいのは
ご覧のとおり、1 つのインスタンス化のみの仕様を削除できるかどうかはわかりません。またexplicit
、可能であれば、構文がどのようなものかわかりません。
c++ - ダブルに対してテンプレートクラスが正しく機能しないのはなぜですか?
次のコードがあります。
出力:
double の代わりに 7.5 が表示されるのはなぜですか?
double を明示的に特化し、参照演算子を使用しない場合、うまく機能します。
これにより、double の正しい出力が得られます。しかし、これを行うとエラーが発生します。
これを修正するには?
double の正しい出力を表示する方法は?
c++ - C++ クラス テンプレートは、関数定義を既存の宣言と一致させることができません
ヘッダーファイルに次のものがあります。多くの関数を持つテンプレート クラス。
私の問題は、上記の含まれている関数のエラー メッセージしか表示されないことです。問題がわかりません。
何が悪いのか分かりますか?
c++ - 複数のテンプレート クラスを同じ型にする方法
2 つのテンプレート クラス A と B があります。互いに入れ子にせずに、それらを同じ型にインスタンス化する方法を教えてください。たとえば、次のように 2 つのクラスを定義するとします。
次に、ユーザーがこのようなことを行う可能性がありA<int> a;
ますB<float> b;
A と B にまったく同じ型を強制したいのですが、それらを互いに入れ子にしたくありません。したがって、誰かがこれら 2 つのクラスを使用する場合、A と B は同じ型でなければなりません。それを行う方法はありますか?そして、このようなクラスを設計するための良い習慣は何ですか?
ありがとう
c++ - クラスは、それ自体で具体化された別のクラス テンプレートから継承できますか?
私はいくつかのコードを調べていて、次のようなものを見つけました:
これが正しいことなのかどうか、私は疑問に思っていました。はいの場合、GarbageCollectorProcess の定義に依存する別のクラスを使用して GarbageCollectorProcess を定義しているため、これはある種の自己定義ループにつながるべきではありませんか?