나는 친구 템플릿 함수로 템플릿 클래스를 가지고있다. 저는 현재 다음과 같은 코드를 가지고 있고 그것은 노력 : 나는 보안 혜택이 제공 일대일 대응을 할 수 있도록 내 솔루션은 친구 기능의 앞으로 선언을하는앞으로 템플릿 선언 함수
template<class T>
class Vector
{
public:
template<class U, class W>
friend Vector<U> operator*(const W lhs, const Vector<U>& rhs);
}
template<class U, class W>
Vector<U> operator*(const W lhs, const Vector<U>& rhs)
{
// Multiplication
}
내가 선호 내 현재 방법에 비해. 다음과 같은 시도했지만 오류가 계속 실행.
template<class T>
class Vector;
template<class T, class W>
Vector<T> operator*(const W lhs, const Vector<T>& rhs);
template<class T>
class Vector
{
public:
friend Vector<T> (::operator*<>)(const W lhs, const Vector<T>& rhs);
}
template<class T, class W>
Vector<T> operator*(const W lhs, const Vector<T>& rhs)
{
// Multiplication
}
원래 'friend' 선언을 사용하지 마십시오. –
원래 버전에서는 Vector의 모든 템플릿 인스턴스화가 연산자 *의 모든 템플릿 인스턴스화를 사용하는 친구입니다. 나는 벡터가 모든 다른 템플릿 인스턴스화가 친구가되도록 허용하지 않는 두 번째 솔루션을 선호합니다. – noddy