問題タブ [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++ テンプレート クラスの何が問題になっていますか?
次のスニペットはヘッダー ファイルにあります。
そして、これは私がそれを使用する方法です:
私の質問は、なぜ最後の 2 つの印刷呼び出しがゼロの値にならないのですか?
c++ - ベクトルを使用する C++ テンプレート クラス
私の小さなプロジェクトでは、次のような状況があります。
このコードは正常にコンパイルされますが、リンクできません。これを cpp ファイルに追加しない限り、メイン ファイルでリンカーが AClass の実装を見つけることができないためです。
しかし、それはテンプレートを使用する利点を奪うので、ばかげています。
ここで質問: cpp ファイルでクラス転送を使用せずにリンクの問題を解決する方法はありますか、それとも別の .h ファイルと .cpp ファイルにこのようなものを含めることは不可能ですか? クラス宣言を前方に置くことは、私にとってオプションではありません。
これについて明確にしたいと思います。
ありがとう
c++ - 基本クラスの基本反復子を設計する
私は現在、とBase
を含むいくつかの仮想メソッドを提供するインターフェイス (次の例) を設計しています。これら 2 つのメソッドは、クラスのような他のコレクションと同様に、対応する反復子を単純に返します。派生クラスはこれらのメソッドを実装し、反復子の特定の実装を返す必要があります。begin()
end()
boost::transform_iterator
次の (簡略化された) 例は、 を使用して整数のプライベート内部リストを変換する派生クラスを示しています。この実装は、実際には、反復される「もの」が別のものになる可能性があり、イテレータも同様の例にすぎません。
この例は機能しますが、問題が 1 つあります。のオブジェクト型はmain()
、使用されたイテレータが型であるという事実を隠しませんTransformIterator
。基本クラスは、すべてのプラグインが共有ライブラリであるある種のプラグイン アーキテクチャで使用されます。プラグインは、使用されているイテレータのタイプを認識してはならず、抽象インターフェースのみに依存する必要があります。これを行う方法はありますか?
もう少し背景: この特定の例は、構成ファイルを読み取るインターフェイスに基づいています。現在、YAML ファイルの実装のみを計画していますが、XML や古い学校の INI などの他の形式も可能です。したがって、共通のインターフェイス。
c++ - C++: 関数定義を既存の宣言と一致させることができません
「テンプレート」の公開で宣言した方法は次のとおりです
印刷するのはこちら
何が間違っているのかわかりません。