同じ名前の 2 つのメソッドを持つテンプレート化されたクラスが必要です。1 つは T& 型のパラメーターを受け取り、もう 1 つは Rational& をパラメーターとして受け取り、Rational は私のクラスです。これがテンプレートの特殊化と呼ばれるのか、単純なオーバーロードと呼ばれるのかはわかりません。もう1つのことは、hおよびcppファイルではなく、実装の宣言を含むhppファイルを持っていることです。
これに対する正しいsytanxは何でしょうか?
このようなもの:
template <class T> class Matrix
{
bool hasTrace (Rational& trace) const
{
}
bool hasTrace (T& trace) const
{
}
}
このコードのみがコンパイルされず、コンパイル エラーが発生します。
..\/Matrix.hpp:200:7: error: 'bool Matrix<T>::hasTrace(T&) const [with T = Rational]' cannot be overloaded
..\/Matrix.hpp:180:7: error: with 'bool Matrix<T>::hasTrace(Rational&) const [with T = Rational]'
私は今、このチュートリアルを見ました: ここにリンクの説明を入力してください
テンプレートの特殊化の下で、私が達成したいことは、テンプレートの型を関数を再定義したい特定の型に置き換えながら、クラス定義の外で特殊化された関数を定義することによって行うことができると言います:
bool Matrix<Rational>::hasTrace (Rational& trace) const
{
}
しかし今、私はこのエラーを受け取ります:
..\/Matrix.hpp:227:6: error: specializing member 'Matrix<Rational>::hasTrace' requires 'template<>' syntax
再度、感謝します