2010-04-20 5 views
0

pourquoi void operator<<(ostream out, Test &t); renvoie une erreur alors que void operator<<(ostream &out, Test &t); ne fonctionne pas? Parce que vous ne pouvez pas copier les flux, vous devez les transmettre par référence.surcharge flux en C++

Répondre

10

Notez que la forme canonique de operator<< est la suivante:

std::ostream& operator<<(std::ostream& out, const Test &t) 
{ 
    // write t into out 
    return out; 
} 

retourner le flux est important, pour que vous puissiez la sortie de chaîne ensemble:

std::cout << Test() << '\n'; 
+1

Le deuxième argument doit être 'const Test & t' (La sortie ne devrait pas modifier l'objet). – visitor

+0

@visitor: Vous avez certainement raison, j'ai copié sans regarder assez attentivement. Merci d'avoir attrapé ça! – sbi