問題タブ [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++ - pointer_name のエラーはこのスコープで宣言されていません
テンプレート基底クラスのヘッダーにポインタfirst , last & counterの宣言をしましたが、派生クラスの定義にheaderが含まれていると、first,last & counterがこのスコープで宣言されていないというエラーが発生します。ただし、最初、最後、およびカウンターを宣言するために使用したヘッダーは、派生クラスのヘッダーと実装ファイルに既に含まれています。
c++ - テンプレート クラスで動作するように C++ コードを調整する方法
次のコードは、char または int として取得する必要がある Red Black Tree プログラムの一部であるitem
ため、テンプレート クラスを使用することにしましたが、完全なプログラムでそれを拡張する方法がわかりません。コンパイラは数千のエラーを送信します。 :
コードにはドイツ語の名前が付けられているため、理解しやすくするために、一部を翻訳します。
Knote.hpp
Knote.cpp
残りはどうすればいいですか?
Baum.hpp
Baum.cpp
c++ - static const メンバ変数の部分特殊化
現在、サードパーティ ライブラリのマトリックス クラスのラッパーであるテンプレート クラス Mat を実装しました (T はコンポーネントの型です: double、int など)。ここで、ストレージに 1 つの Mat を使用し、インデックスのマッピングに 2 つ目の Mat を使用する Tensor クラスを実装したいと考えています。
Tensor クラスを Tensor としてテンプレート化しました。ここで、T は Mat クラスと同じです。Order と Dim は整数であり、テンソルの次数 (またはランク) と次元 (2 または 3) です。Sym は、対称性を表すブール フラグです。
Tensor クラスは Voigt 表記法を使用して、高次のテンソルを行列に圧縮します (たとえば、3 x 3 x 3 x 3 のテンソルは 6 x 6 の行列にマッピングできます。これはインデックスの各ペアを単一のインデックスにマッピングすることによって行われます)。Voigt 表記法では、3 行 3 列のテンソルを 6 行 1 列のベクトル (行列) にマッピングできますが、テンソルの (0,0) 成分をベクトルの 0 位置に移動します。類似 (1,1) -> 1、(2,2) -> 2、(1,2) -> 3、(0,2) -> 4、および (0,1) -> 5. 類似のルール2 行 2 列のテンソルを終了します (これらは 3 行 1 列の行列にマップされます)。
この目的のために、Tensor クラスが行列を所有するようにしたいと思います。
Dim == 3 かつ Sym == true の場合。非対称テンソルと 2D テンソル (全部で 4 つ) に対応するマップがあります。これらは、他のテンプレート パラメーター (T および Order) に依存しません。
したがって、どの時点でそれらを専門化するのでしょうか? (ここで、質問は、部分的な特殊化のみに static const メンバーを必要とするテンプレート化されたクラスを持つすべての人に適用されます)。
ここでこの質問をチェックアウトしました:テンプレート クラスの静的 const メンバー変数を定義する場所。ただし、部分的な特殊化については説明していません。
これまでのところ、同じヘッダー ファイルに前方宣言とクラス定義があります。
Tensor クラスの単体テストでは、次のように入力できます。
問題は、すべての注文 (1、2、3、および 4) に対してこれを行う必要があることです。また、他の型のテンソル (ここでは、real は long double の typdef) を使用すると、重複するコードが多すぎます。
どこでマップを初期化できますか?
c++ - テンプレートクラスは、c ++で同じ型Tの別のテンプレートクラスの属性になることができますか?
テンプレート クラスTripla (リスト構造のノード) と別のテンプレート クラスListaがあります。将来再利用できるようにジェネリックにしたいのですが、ListaクラスのTriplaオブジェクトにデータ型を設定する方法がわかりません。
}
一部のコンパイル エラーには、「エラー C2955: 'Tripla': クラス テンプレートの使用にはテンプレート引数リストが必要です」Tripla*
に変換できないことが含まれます。Tripla<T>*
同じデータ型を両方に設定する方法を理解するのに問題があります。たとえば、main.cpp から、次のようなものが必要です。
これにより、Tripla *primer と *ultimo が int で自動的に動作するようになります。
c++ - C ++の別のクラスでのテンプレートクラスのインスタンス化
メインでインスタンス化しても問題はありませんが、別のクラスで同じものをインスタンス化しようとすると問題が発生するテンプレートクラスがあります。誰かがこれの解決策を教えてください
上記のコードは問題なくコンパイルされます。しかし
このコードはコンパイルされていません。私に次のようなエラーを与える
main.cpp|19|エラー: 文字列定数の前に識別子が必要です| main.cpp|19|エラー: 文字列定数の前に ',' または '...' が必要です |
ありがとう、ハリッシュ
c++ - テンプレート クラスの numeric_limits max 関数の定義
テンプレート クラスの関数 max の定義に問題があります。このクラスでは、数値を単純な整数としてではなく、いくつかの数値システムの数値のベクトルとして保持しました。また、numeric_limits を定義すると、定義された数値システムに基づく最大数の表現を返す必要があります。
そして、最大表現でクラスを返そうとすると多くのエラーが発生しますが、整数を返すと機能します。
私のテンプレートクラス:
.h ファイルの最後に、次のものがあります。
これを const と constexpr で試しましたが、うまくいきません。このエラーを取り除く方法がわかりません:
そして、これは私がメインでやろうとしていることです:
これは私の課題なので、これを行う方法を判断しないでください。これは私の教師の選択であり、問題をかなり包括的に提示したことを願っています.