대입 문제 C ++ 템플릿 클래스

당신이 수업 과제를 달성하려면 다음과 같은 클래스 템플릿 들어, 할당 () 함수를 사용합니다. 으로는 다음과

템플릿 < 클래스 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는 객체가 속한 할당해야 동일.

추천

출처www.cnblogs.com/mindulmindul/p/12149235.html