| Qui est en ligne ? |
| Il y a : 25 utilisateurs en ligne, consultez le détail |
Forum » Serveur, Réseaux et Programmation » [C++] Valeur de retour d'un objet |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
| Page : [1] |
| Auteur | Message |
|---|---|
|
|
#0 Message posté le : 06-12-2006 à 19:06:53 |
Naboo Forum : Inscrit Association : Arrivé(e) le : 24-02-2004 Nombre de messages : 2217 |
Savez-vous comment on fais pour qu'un objet en lui-même retourne une certaine valeur ? Exemple : class exemple{
};
exemple Ex1;
cout << Ex1 << endl;Mais je ne veux pas que Ex1 me retourne l'adresse, mais quelque chose que je choisis dans la classe. Une sorte de surdéfinition. Merci. |
|
|
#1 Message posté le : 07-12-2006 à 14:04:28 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
Ici ta surdéfinition est une surcharge d'operateur On utilise une fonction amie de ta classe qui surchagera l'opérateur '<<' Un example renvoyant le nom de l'instance spécifié à la création de cette instance. Note : l'instance de la classe doit être un pointeur d'instance.
/* example toto.cpp with operator << overloading */
#include <iostream>
#include <istream>
#include <string>
using namespace std;
class Toto
{
public:
Toto(string instancename);
friend ostream& operator << (ostream &out, Toto *obj);
string instance;
};
/* constructor */
Toto::Toto(string instancename)
{
this->instance = instancename;
}
/* friend function */
ostream& operator << (ostream &out, Toto *obj)
{
out << obj->instance;
return out;
}
/* main */
int main()
{
Toto *One = new Toto("First Instance"); /* pointeur d'instance */
Toto *Two = new Toto("Second Instance"); /* pointeur d'instance */
Toto Three = Toto("Third Instance"); /* est une instance */
cout << One << endl;
cout << Two << endl;
cout << &Three << endl;
delete One;
delete Two;
}
g++ toto.cpp -o toto -Wall ./toto First Instance Second Instance Third Instance --Message édité par tamiel le 07-12-2006 à 16:22:18-- ------------------------------------- If you don't know, ask manpage ! |
|
|
#2 Message posté le : 08-12-2006 à 17:24:18 |
Naboo Forum : Inscrit Association : Arrivé(e) le : 24-02-2004 Nombre de messages : 2217 |
Oui pour le flux << je savais, mais pour un while ? while(Toto){ } Et Toto, l'objet renvois un sous certaine condition, et stop un moment. |
|
|
#3 Message posté le : 08-12-2006 à 17:42:38 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
Faire un while sur un objet lui même c'est pas logique . Tu dois avoir un problème de logique dans la construction de ta classe. En plus : while(Toto) n'est pas possible, dans mon exemple Toto est une classe pas un objet. Une classe ne vaut rien sans une instance créant un objet. Par contre tu peux faire : Toto *Instance = new Toto; while(Instance->getValeur == valeur) { .... } delete Instance; --Message édité par tamiel le 08-12-2006 à 17:51:20-- ------------------------------------- If you don't know, ask manpage ! |
|
|
#4 Message posté le : 09-12-2006 à 12:56:33 |
Naboo Forum : Inscrit Association : Arrivé(e) le : 24-02-2004 Nombre de messages : 2217 |
Je savais que dans ta classe ce n'étais pas un objet mais c'étais pour reprendre ton terme Et je pense que c'est faisable, en fait j'essais de faire un truc du genre de fstream :
fstream Fi_Liste ("Mon fichier", ios_base::in);
while(Fi_Liste){
Fi_Liste >> Buffer;
cout << Buffer << endl;
}
Et la tu vois que l'objet et bien dans le while et quand le fichier est à sa fin, Fi_Liste renvois 0. --Message édité par Moilebigboss le 09-12-2006 à 12:56:56-- |
|
|
#5 Message posté le : 09-12-2006 à 13:05:49 |
Hobbit Forum : Inscrit Association : Arrivé(e) le : 17-10-2003 Nombre de messages : 1067 |
Ok si je comprends bien tu veux faire qqchose du genre :
while( Objet->getLine() != 0 )
{
cout << Objet << endl;
}
? ------------------------------------- If you don't know, ask manpage ! |
|
|
#6 Message posté le : 09-12-2006 à 13:22:32 |
Naboo Forum : Inscrit Association : Arrivé(e) le : 24-02-2004 Nombre de messages : 2217 |
Ouai en quelque sorte. Mais je voudrais ne pas avoir a appeller une fonction de la classe. L'objet seul, justement comme j'ai vu que fstream le faisais je me suis dis que ce serais plus propre de faire comme ça aussi. Mais je ne sais pas si c'est possible. |
| Page : [1] |
Forum » Serveur, Réseaux et Programmation » [C++] Valeur de retour d'un objet |
Forum modéré par : jblecanard |
| Même auteur |
|
Score ( voter ) : |
|
- Petit scarabée : 0 pastille, moins de 100 messages
- Scarabée : 0 pastille, plus de 100 messages
- Hobbit : 1 pastille, plus de 1000 messages
- Naboo : 2 pastilles, plus de 2000 messages
- Elfe : 3 pastilles, plus de 3000 messages
- Jedi : 4 pastilles, plus de 4000 messages
- Maître Jedi : 5 pastilles, plus de 5000 messages