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

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

c++ - この単純な C++ テンプレート クラスの何が問題になっていますか?

次のスニペットはヘッダー ファイルにあります。

そして、これは私がそれを使用する方法です:

私の質問は、なぜ最後の 2 つの印刷呼び出しがゼロの値にならないのですか?

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

c++ - ベクトルを使用する C++ テンプレート クラス

私の小さなプロジェクトでは、次のような状況があります。

このコードは正常にコンパイルされますが、リンクできません。これを cpp ファイルに追加しない限り、メイン ファイルでリンカーが AClass の実装を見つけることができないためです。

しかし、それはテンプレートを使用する利点を奪うので、ばかげています。

ここで質問: cpp ファイルでクラス転送を使用せずにリンクの問題を解決する方法はありますか、それとも別の .h ファイルと .cpp ファイルにこのようなものを含めることは不可能ですか? クラス宣言を前方に置くことは、私にとってオプションではありません。

これについて明確にしたいと思います。

ありがとう

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

c++ - 基本クラスの基本反復子を設計する

私は現在、とBaseを含むいくつかの仮想メソッドを提供するインターフェイス (次の例) を設計しています。これら 2 つのメソッドは、クラスのような他のコレクションと同様に、対応する反復子を単純に返します。派生クラスはこれらのメソッドを実装し、反復子の特定の実装を返す必要があります。begin()end()

boost::transform_iterator次の (簡略化された) 例は、 を使用して整数のプライベート内部リストを変換する派生クラスを示しています。この実装は、実際には、反復される「もの」が別のものになる可能性があり、イテレータも同様の例にすぎません。

この例は機能しますが、問題が 1 つあります。のオブジェクト型はmain()、使用されたイテレータが型であるという事実を隠しませんTransformIterator。基本クラスは、すべてのプラグインが共有ライブラリであるある種のプラグイン アーキテクチャで使用されます。プラグインは、使用されているイテレータのタイプを認識してはならず、抽象インターフェースのみに依存する必要があります。これを行う方法はありますか?

もう少し背景: この特定の例は、構成ファイルを読み取るインターフェイスに基づいています。現在、YAML ファイルの実装のみを計画していますが、XML や古い学校の INI などの他の形式も可能です。したがって、共通のインターフェイス。

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

c++ - C++: 関数定義を既存の宣言と一致させることができません

「テンプレート」の公開で宣言した方法は次のとおりです


印刷するのはこちら

何が間違っているのかわかりません。

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

c++ - 特性を使用してテンプレート クラスでコンパイル時にエラーをスローして関数を無効にする

Foo私はクラスを持っています。いくつかのメソッドでそれを呼び出しましょう:

と の両方を構築できるようにしたいのですが、型 T が浮動小数点型でない場合の呼び出しを許可したくありませんFoo<double>。また、実行時ではなくコンパイル時にエラーが生成されるようにします。だから、私が欲しいのは:Foo<int>bar()

( thisまたはthis oneenable_ifのような投稿で)で多くのことを試しましたが、 でタイプを使用できなくなりました。例えば:intFoo

bar()浮動小数点型の使用を制限し、整数型を他の場所で使用できるようにするにはどうすればよいですか?