Ho una classe modello con una funzione modello amico. Al momento ho il seguente codice e sta funzionando:Inoltro dichiarazione di modello Funzione
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
}
io preferirei per il mio soluzione per avere dichiarazione anticipata della funzione amico in modo che io possa avere le prestazioni di sicurezza e one-to-one corrispondenza che fornisce rispetto al mio metodo attuale. Ho provato quanto segue, ma continuo a incorrere in errori.
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
}
non y utilizzare l'originale 'dichiarazione friend' –
con la versione originale, tutte le istanze del modello di vettore sono amici con tutte le istanze del modello di operatore *. Preferirei la seconda soluzione in cui i Vettori non consentissero a tutte le diverse istanze dei modelli di essere amici. – noddy