あなたはクラスの割り当てを達成する必要がある場合は、次のクラステンプレートについては、アサイン()関数を使用します。以下の
テンプレート< クラス T> クラスのMyClass { プライベート: T値。 公共: ボイドのsetValue(T&_value){ 値 = _value。 } ボイド割り当て(CONST MyClassの<T>&x)は{ 値 = x.value。 } TのgetValue(){ 戻り値。 } }。 INTメイン(ボイド) { MyClassの < ダブル > D。 MyClassの < ダブル> DD; ダブル TEMP = 23.123 ; d.setValue(TEMP)。 dd.assign(D)。 COUT << d.getValue()<< ENDL << dd.getValue()<< ENDL。 リターン 0 ; }
二つのクラス場合Tは同じではない場合、()メソッドの割り当てを割り当て使用
INTメイン(ボイド) { MyClassの < ダブル > D。 MyClassの < 整数 > I。 ダブル TEMP = 23.123 ; d.setValue(TEMP)。 i.assign(D)。 COUT << d.getValue()<< ENDL << i.getValue()<< ENDL。 リターン 0 ; }
次の問題
あなたが見ることができ、アサイン()関数は、引数として、Aのconst MyClassの<整数>のタイプを対象としたいですが、MyClassの<ダブル>オブジェクトを得ました。一方、MyClassのは、<ダブル>のconst MyClassの<整数>に変換することができない場合、コンパイラはエラーを報告します。
私たちは、上記の割り当ては同じことを行うようにすることを、どのようなMyClassのアサイン機能を再定義する必要があります。
テンプレート < クラス X-> // X-追加 空隙 ASSIGN(CONST MyClassの<X->・X)を{//割り当てはX-の別のタイプとして定義することに対するX 値 = x.getValue(); }
したがって、上記の割り当てが動作することができます。
長いXからTへの割り当てなどを行うことができるように、この割り当て機能を行うことができます。実際には、これはパラメータにするために機能を割り当てることを避けるためにあるTは、オブジェクトが属する割り当てる必要がありますT と同じ。