템플릿 클래스의 꺾쇠 괄호 연산자 오버로드
<< 연산자를 템플릿 클래스 쌍의 친구로 사용하면 템플릿이 아닌 함수 선언을 나타내는 컴파일러 경고가 나타날 수 있습니다. 이 문제는 friend 선언과 실제 함수 정의 간의 불일치로 인해 발생합니다.
이 문제를 해결하려면 friend 선언이 특정 템플릿 인수가 있는 템플릿 클래스 쌍의 특수 인스턴스에 적용되도록 지정해야 합니다. 이는 빈 꺾쇠 괄호 <>를 사용하여 달성됩니다. friend 선언의 연산자 선언 뒤에.
수정된 코드는 다음과 같습니다.
<code class="cpp">template <class T, class U> class Pair { public: Pair(T v1, U v2) : val1(v1), val2(v2) {} ~Pair() {} Pair& operator=(const Pair&); friend ostream& operator<<<> (ostream&, Pair<T, U>&); private: T val1; U val2; };</code>
또한 오버로드된 연산자에 대한 함수 정의는 다음과 같이 템플릿 클래스 정의 앞에 선언되어야 합니다. 다음은 다음과 같습니다.
<code class="cpp">template <class T, class U> ostream& operator<<<> (ostream& out, Pair<T, U>& v); template <class T, class U> class Pair { // ... };</code>
이러한 변경을 통해 컴파일러는 friend 함수를 pair 템플릿의 특수화로 올바르게 식별하고 비템플릿 함수 선언과 관련된 경고를 피할 수 있습니다.
위 내용은 템플릿 클래스의 꺾쇠 괄호 연산자를 올바르게 오버로드하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!