2017-01-20 1 views
0

동일한 주제에 대해 질문이 있지만이 주제는보다 구체적으로 묻습니다.템플릿이있는 운영자에게 유형 이름을 전달하십시오.

개인용 멀티 템플릿 컨테이너를 만들고 있습니다. 이 obj[n]=value; 같이 값을 할당 할 수 있도록 (좌변으로) 자신의 유형을 반환

  • obj[n] : 내 용기로 사용하고 싶었 기본 연산자 세부 사항은 여기에서 중요하지,하지만 있습니다

번째 조작자 과부하 내가 할거야 원하는 하나 (AN r- 수치로) something=obj[n];과 "배열"에 기억 검색된 값을 반환 obj[n] 과부하 k 약.

template <typename T1, typename T2> 
class example 
{ 
    /*some private and public definitions*/ 

    example<T1, T2>& operator[] (int n) 
    { 
     current = n; 
     return *this; 
    } 

    template <typename U> 
    U operator[] (int n) 
    { 
     /*some operations*/ 

     return something; 
    } 
}; 

문제는 내가 오버로드 된 연산자의 반환 값을 변수화 할, 수 있습니다 : 매우 최소한의 예를 사용

, 여기 내 클래스의 기본적인 모습입니다.

여기서 한 가지 질문은 stackoverflow에서 "명시 적으로 명시 적으로"연산자를 호출하여 수행 할 수 있음을 읽었습니다.

내 질문에 어떻게 해결할 수 있습니까? 일반적인 연산자 호출을 매개 변수화 할 수 없다면 적어도 달성 할 수있는 목표에 대해 내 rvalue 연산자 []를 구현해야합니다.

답변

1

코드에 오버로드 된 연산자가 두 가지 있습니다. [] 연산자와 = 연산자. 특정 클래스에 rvalue를 반환하기 위해 []을 오버로드 한 다음 해당 클래스가 연산자의 왼쪽 또는 오른쪽에 나타나는지 여부에 따라 해당 특수 클래스에 대해 =을 오버로드 할 수 있습니다.

관련 문제