Ma question est un peu liée à this un.fonction d'ami dans la définition de modèle
Je veux surcharger l'opérateur < < pour une classe et j'ai trouvé deux notations différentes que les deux de travail:
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);
};
-je définir des choses identiques avec différentes notations? Ou est la première version plus restrictive dans quelle instance (dans ce cas seulement l'instance avec le même T que ma classe A) de < < est ami de A?
Couple de choses. Premièrement, je pense que vous vouliez dire 'os << b.t' plutôt que 'os << b.i' pour sortir la variable membre possédée. Deuxièmement, l'exemple ci-dessus fonctionnerait bien avec l'opérateur << instance car il utiliserait la fonction 'ostreame & operator << (ostream & os, double num)', et non la version de modèle déclarée. – workmad3
J'avais la tête ailleurs, semble-t-il, mais je l'ai réparée en attendant. –