問題タブ [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++ テンプレート クラス operator<< オーバーロード
<<
テンプレート クラスの演算子をオーバーロードしようとすると、error LNK2019: unresolved external symbol
エラーが発生します。コードは次のとおりです。
すべてのコードは同じ .cpp ファイルにあります。正常にコンパイルされますが、行にリンクの問題があるようですcout<<S
。コメントアウトすれば、それ以外はすべて問題ありません。同様の問題に関する他のいくつかの投稿を検索しましたが、答えが見つかりませんでした。私がそれを機能させる唯一の方法は、 の定義を外部に置くoperator<<
のではなく、 の定義にコピーすることです。struct subvec<T>
しかし、私の定義operator<<
はまだ同じファイルにあります。これをどのように解決すればよいですか?とにかく、最終的にはヘッダーファイルを分離する必要があります。ありがとう!
c++ - テンプレート クラス タイプ固有の関数
わかりましたので、このテンプレート クラスがあります。これは、一方向リストのようなものです。
そして、この内部関数 print があります
ご想像のとおり、リストの内容を最初から最後まで出力します。ただし、テンプレートは T としてクラスを取ることができるため、まさにその場合に Print() の異なる実装が必要になることが想像できます。たとえば、別のクラス Point があります
だから私はポイントのために特別に設計されたプリントが欲しい. 私はこれを試しました:
しかし、コンパイラは私に教えてくれます
けれど
私にとっては、同じ機能のようです。どうしたの?また、T 固有のテンプレート クラス関数をどのように記述すればよいでしょうか。
c++ - メソッドのデフォルト パラメータとしてのメソッド
私は現在、から派生したC++コースのセットクラスに取り組んでいvector<T>
ます。
index()
ある時点で、これらのセット内のオブジェクトのインデックスを (セットに含まれている場合) 明らかに返す関数を実装する必要があるところまで来ました。index()
クラス全体を書いているときに、これらのメソッドをオーバーロードする必要があるところに来ました。ここに私の 2 種類の方法があります。3 つのパラメーターを使用:
1つのパラメータを持つ2番目:
ポイントは、これら 2 つのメソッドを書きたくないということです。可能であれば、1 つにまとめることができます。メソッドのデフォルト値について考えたindex()
ので、メソッドヘッドを次のように記述します。
エラーが発生しました:
Elementfunction can't be called without a object
そのエラーについて考えた後、私はそれを次のように編集しようとしました:
しかし、それは私にエラーを与えました:You're not allowed to call >>this<< in that context.
見逃したかもしれませんが、メソッドをデフォルトのパラメーターとして呼び出すことができるかどうかを誰かが教えてくれるかどうか教えてください。
c++ - クラス テンプレートの特殊化 (配列)
テンプレートに特化したクラスのコード重複を減らすには?
私はクラス ( MyArray
)を作成しようとしてstd::vector
いますが、一部の関数のパラメーターとして raw-pointer を受け取ります。
これはそれの簡略化されたバージョンです:-
ここにテストがあります: -
質問: で上記のコードの重複を減らすエレガントな方法を示してくださいMyArray
。
私が望んでいた解決策は次のようになります:-
メモリ リーク/破損が発生している可能性があります。簡単にするために、それを無視してください。
アイデア/大まかなガイドが欲しいだけです。(完全な実行可能なコードを提供する必要はありませんが、気にしません)
実際には、20 以上の関数がMyArray
あり、多くのクラスに対して同じリファクタリングを行いたいと考えています。
編集:一部のコードとタグを (マイナー) 編集しました。AndyG と Jarod42 に感謝します。