問題タブ [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 に答える
245 参照

c++ - テンプレートクラスで定義された定数

重複の可能性:
GCCの問題:テンプレート引数に依存する基本クラスのメンバーを使用している

私はC++に精通していると思いましたが、どうやら十分に精通していないようです。
問題は、テンプレートクラスで定数を定義する場合、そのクラスから派生する新しいクラスでは定数を使用できますが、それから派生する新しいテンプレートクラスでは使用できないことです。

たとえば、gccは言います

test.h:18:エラー:「定数」はこのスコープで宣言されていません

この(簡略化された)ヘッダーファイルをコンパイルしようとすると、次のようになります。

したがって、問題は、一方のクラスderive1が正常にコンパイルされるのに対しderive2、テンプレートの特殊化であるもう一方のクラスは正常にコンパイルされないことです。
gccのエラーは十分に明確ではないかもしれませんが、のコンストラクターがのコンストラクターとderive2は異なるスコープを持つ理由がわかりませんderive1
重要な場合、これは、タイプのオブジェクトをインスタンス化するときではなく、ヘッダーファイル自体のコンパイル中に発生しますderive2<type>

また、このコンパイルを行うために何を変更するかを知っているので、答えとして1行のコードを実際に探しているわけではありません。なぜこれが起こるのか理解したいです!Webを検索しようとしましたが、正しい検索引数を使用していないようです。

0 投票する
4 に答える
174 参照

c++ - C++ でテンプレートを実行する別の方法は?

テンプレートクラスを作成するこのプリプロセッサ依存の方法を発見したとき、私はちょうどいじっていました:

これを次のように簡単にコンパイルしました。

出力:

ご覧のとおり、テンプレート クラスとほとんど同じように機能します。オブジェクトはグローバルにしか宣言できないという明らかな事実を除いて、実際には を使用するときに新しいクラスをインラインで定義し、新しいクラスTEMPLATE_CLASS(T)を関数内で定義することはできません。これに対する解決策は次のとおりです。

とにかく色々と考えさせられました。まず、これを有効なジェネリック クラスと呼ぶことはできますか? では、標準のテンプレート機能の代わりに使用できる可能性はありますか? 明らかに、標準のテンプレート機能を使用する方がはるかに便利ですが、私が言いたいのは、これでも同じように機能するかということです。最後に、C++ 標準によって定義されたテンプレート機能は、プリプロセッサで行っていることと同様のことを内部的に行いますか? そうでない場合、この実装と C++ の標準テンプレート機能の違いは何ですか?

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

aop - テンプレート クラスの Spring AOP ポイントカットが機能しない

ポイントカットとして次のクラスがあります

そして、それに対して定義された次のアドバイス...

これを実行しようとすると、次の例外エラー メッセージが表示されます。

**

インターフェース javax.ws.rs.ext.ExceptionMapper の型引数が見つかりません

** このクラスによってエラーがスローされてい ます http://grepcode.com/file/repo1.maven.org/maven2/org.jboss.resteasy/resteasy-jaxrs/2.2.2.GA/org/jboss/resteasy/ util/Types.java#Types.getActualTypeArgumentsOfAnInterface%28java.lang.Class%2Cjava.lang.Class%29

RESTEasy コードの一部。

これは、「Spring AOP はテンプレート インターフェイスを実装するポイントカット クラスをアドバイスできない」ためですか? 何か案は?Spring AOP は、パラメータ化されたインターフェースを実装するクラスのプロキシ オブジェクトをどのように作成しますか?...CGLIB または JDK プロキシを使用しますか?

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

c++ - テンプレートクラスをC++ライブラリからVB.NETおよびC#にエクスポートします

次の問題があります。次のようなテンプレートクラス定義を使用して、C++でDLLを作成しました。

エクスポートしたいので、次のように定義しました。

なぜなら-私が読んだ-VisualC++では、テンプレートをエクスポートすることはできず、明示的な初期化のみを行うことができます。このようにしてすべてが正常に機能し、DLLを新しいVisualC++コードにインポートできます。今:必要なすべてのタイプ(myClass、myClassなど)の明示的なインスタンス化をエクスポートする必要がありますか?それとも、それを行うためのより良い方法がありますか?テンプレートクラスをVB.NETプロジェクトにインポートするにはどうすればよいですか?方法はありますか?または、マーシャリング構造を作成し、実行時にテンプレートクラスで変換する必要がありますか?

皆さん、ありがとうございました!

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

c++ - テンプレートクラスコンストラクタでの動的割り当て

私はスタッククラスに取り組んでおり、2つのコンストラクターがあります。興味深いのはこれです。

私はそれをこのようにメインの中で呼んでいます。

プログラムは正常にコンパイルされますが、この実行時エラーが発生します。

私は取り組んでいますがMicrosoft visual studio 2010、この問題は私をどこにも連れて行ってくれません。ヒントをいただければ幸いです。

0 投票する
3 に答える
92 参照

java - このテンプレートクラスをジェネリッククラスにする

だから私はちょっとした助けと理解を探している大学生です、私はArrayListのようなJavaの事前に書かれたクラスを使用することを許可しない教授を持っています、それで私は私の現在のカプセル化された配列クラスを変更する方法を理解しようとしていますプログラムのアプリケーションクラスでそれほど多くのキャストを行う必要がないように、ジェネリックを使用する

0 投票する
3 に答える
117 参照

c++ - 関数テンプレートをクラス テンプレートのコールバックとして定義する

同じ型のコールバック関数を受け取るクラス テンプレートを定義したいと考えています。何かのようなもの:

そして、それは次のように使用されます:

残念ながら、コールバック関数は を介し​​て関数テンプレートとして定義することはできませんtypedef

これを行う別の方法はありますか?

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

c++ - C++ でのテンプレート メソッドを使用したテンプレート クラスの使用

パブリック テンプレート メソッドを持つクラスがあります。このクラスには、クラス テンプレートを介して渡したい 2 つの動作戦略があります。

しかし、このコードはコンパイルされません。このように使用法を正確に保つ必要があります(戦略を介して操作するため)。

0 投票する
3 に答える
472 参照

c++ - テンプレートクラスと考えられるパフォーマンスの問題

テンプレートクラスを使用して30の異なる定義を作成するとします。私の質問は、実際のコードは非常に似ているか、まったく同じですが、バイナリ(binary size = sizeof(template_class)x 30)で30の実際のクラスにコンパイルされるかどうかです。

もしそうなら、そして実行時に、私のプログラムはメモリにロードされます。これらの30個のインスタンスをループします(定義ごとに1個のインスタンスを初期化したと仮定します)。実際にはメモリ内に30個のコピーがあり、コードのほとんどが同じであるため、CPU命令キャッシュがリロードされますか?

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

c++ - テンプレートクラスデータメンバーを使用したC ++「適切なデフォルトコンストラクターがありません」エラー

テンプレート クラス Grid を作成し (ヘッダー ファイルで、T のデフォルトは float であると記述しました)、ソース ファイルの一部を引用しました。

また、他のメンバー関数は、行列の値を読み取り/変更したり、計算したりできます。

Grid.h:

テンプレート クラスを使用するには、Grid.cpp と Grid.h を #include する必要があることをインターネットで見つけました。これを行うと、クラス Grid とそのメンバー関数を main() で使用できます。また、Grid.cpp の周りにプリプロセッサ ラッパーを置きます。

ここで、継承なしで Grid 型のメンバーを使用して新しいクラス PDEProblem を構築しようとすると、エラーが発生します。

PDEProblem.h:

PDEProblem.cpp:

どうすればこれを修正できますか? 関連するすべてのデフォルトがあるように思えますか?ありがとうございました