당신이 수업 과제를 달성하려면 다음과 같은 클래스 템플릿 들어, 할당 () 함수를 사용합니다. 으로는 다음과
템플릿 < 클래스 T> 클래스 MyClass에 { 개인 : T 값; 공개 : 공극 의 setValue (T & _value) { 값 = _value; } 무효 지정 ( CONST MyClass의 <T> 및 X) { 값 = x.value; } T getValue () { 리턴 값; } }; int로 주 ( 무효 ) { MyClass의 < 더블 > D 단계; MyClass의 < 더블> DD; 이중 온도는 = 23.123을 ; d.setValue (TEMP); (d) dd.assign; COUT << d.getValue () << ENDL << dd.getValue () << ENDL; 반환 0 ; }
두 클래스 경우 T가 동일하지 않습니다, 다음 () 메소드 지정을 할당 사용
int로 주 ( 무효 ) { MyClass의 < 더블 > D 단계; MyClass의 < INT > 난; 이중 온도는 = 23.123을 ; d.setValue (TEMP); (d) i.assign; COUT << d.getValue () << ENDL << i.getValue () << ENDL; 반환 0 ; }
다음과 같은 문제
당신은 할당 () 함수는 const를 MyClass에 <INT> 입력 인수로,하지만 MyClass에있어 <더블> 개체를 대상으로 욕망 볼 수 있습니다. 한편 MyClass의 <더블> const를 MyClass의 <INT>, 다음 컴파일러가 오류를보고합니다로 변환 할 수 없습니다.
우리는 위의 할당은 동일한 작업을 수행 그래서, 기능을 할당 MyClass에 무엇을 재정의 할 필요가있다.
템플릿 < 클래스 X-> // X- 추가 공극 ASSIGN을 ( CONST MyClass의 <X-> & X) {과제는 X-의 다른 타입으로 정의 될 // X 값 = x.getValue (); }
따라서, 위의 할당 작업 할 수 있습니다.
언제 까지나 수행 할 수 T 할당에 X 일부터,이 할당 기능을 수행 할 수 있습니다. 사실,이 매개 변수를 만들 수있는 기능을 할당하는 것을 방지하는 것입니다 T는 객체가 속한 할당해야 T 동일.