Bir arkadaş şablonu işlevine sahip bir şablon sınıfım var. Şu anda aşağıdaki kodu var ve çalışıyor: Ben güvenlik avantajları ve sağladığı bire bir uygunlukta olduğu böylece benim çözüm arkadaşı fonksiyonunun ileri bildiriye sahip olmak içinŞablon İşlevi'nin İleri Bildirimi
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
}
ben tercih ediyorum benim şu anki yöntemle karşılaştırdım. Aşağıdakileri denedim ancak hatalarla çalışmaya devam ediyorum.
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
}
y orijinal sürümü ile özgün 'friend' deklarasyon –
kullanmayın, Vector tüm şablon örneğinin bulunması * operatörün tüm şablon örneklemesi ile arkadaşlar. Vektörlerin tüm farklı şablon örneklemelerinin arkadaş olmasına izin vermeyeceği ikinci çözümü tercih ederim. – noddy