Coutez et cinez vous propre classes!

Contenu du snippet

C'est une petite source qui permet de surcharger les opérateurs << et >> des classes iostream pour lui faire afficher ce que vous voulez. Donc, au lieu de créer une fonction membre du genre CFRAC::Afficher() qui afficerait la fraction, il est possible de faire cout << mafraction; ou cin >> mafraction;

Source / Exemple :


#include <iostream.h> //pour les flux d'E/S
#include <windows.h> //pour ralentir la compilation ;)

//la classe de Fraction (rien de bien compliqué)
struct CFrac
{
	int den; //denominateur
	int num; //nominateur
	CFrac(int Sden, int Snum)
	{
		num = Sden;
		den = Snum;
	}

};

//on surcharge l'opérateur >> pour fonctionner avec des operateurs
//istream (comme tous les flux d'entree) et CFrac
istream& operator>>(istream& tampon, CFrac& frac)
{
	char VariableTrouQuiSertJusteABoufferUnCaractere; //sa s'explique
	//on extrait les nombres du flux, s'assurant d'enlever la / qui sert a rien
	tampon >> frac.num >> VariableTrouQuiSertJusteABoufferUnCaractere >> frac.den;
	//on retourne une référence afin de permettre le chainage
	return tampon;

}
//on surcharge l'opérateur << pour fonctionner avec des operateurs
//ostream (comme tous les flux de sortie) et CFrac
ostream& operator<<(ostream& tampon,CFrac& frac)
{
	//on insère les donnees a afficher dans le tampon de sortie
	tampon << frac.num << "/" << frac.den;
	//on retourne une référence afin de permettre le chainage
	return tampon;
}

void main()
{
	//on crée 3 fractions;
	CFrac fraction1(5,2), fraction2(3,5),fraction3(5,1000);
	//on les affiche sans problème
	cout << fraction1 << "\t" << fraction2 << "\t" << fraction3 << endl;
	cout << "Entrez 3 fractions sous forme de num/den num/den num/den" << endl;
	//on les recoit sans problème
	cin >> fraction1 >> fraction2 >> fraction3;
	//on les raffiche sans problème
	cout << fraction1 << "\t" << fraction2 << "\t" << fraction3 << endl;
	
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.