내 질문에 관련 bit가 this입니다.템플릿 정의의 친구 기능
내가 어떤 클래스의 연산자 < <를 오버로드 할 내가 모두 일 두 개의 서로 다른 표기법 발견
template <class T>
class A{
T t;
public:
A(T init) : t(init){}
friend ostream& operator<< <> (ostream &os, const A<T> &a); //need forward declaration
//template <class U> friend ostream& operator<< (ostream &os, const A<U> &a);
};
내가 다른 표기법과 동일한 일을 정의 하는가? 또는 첫 번째 버전이 < < 인 인스턴스 (이 경우 클래스 A와 동일한 T를 가진 인스턴스 만)가 A의 친구 일 때 더 제한적입니까? 두번째는 A<SomeType>
친구 걸리는 어떤 operator<<
하게하면서
몇 가지. 첫째, 소유 된 멤버 변수를 출력하려면 'os << b.i'가 아닌 'os << b.t'를 의미한다고 생각합니다. 둘째, 위의 예제는 선언 된 템플릿 버전이 아니라 'ostreame & operator << (ostream & os, double num)'함수를 사용하는 연산자 << 인스턴스로 잘 작동합니다. – workmad3
나는 어딘가에는 내 머리를 가졌지 만, 평균 시간에는 고정시켰다. –