TutorielsVous débutez ? C'est ici qu'on commence !
Mon compte
Recherche
Livre d'or
PublicitéVous devez être inscrit pour pouvoir poster des messages
| Page : 1 2 | |
| Pseudo | Commentaire |
|---|---|
| Page : 1 2 | |
Cyprien_
|
# Posté le 17/05/2007 18:36:14 |
Le Monde d'Akhiris![]() Groupe : Membres |
Toute petite erreur dans la partie sur les opérateurs de flux:
Citation : M@teo21 Code : C++
cout.operator<<("Coucou !"); cin.operateor>>(variable); un e en trop. A part ça, c'est toujours aussi excellent ! 19/20
Un jeu online novateur ? Le Monde d'Akhiris ! |
cookieslover
|
# Posté le 17/05/2007 18:39:47 |
CookieKiss !![]() Groupe : Membres |
Merci beaucoup pour ce tutorial
|
ryan07
|
# Posté le 17/05/2007 18:42:06 |
|
Groupe : Bannis |
Super
rien de plus clair |
shadosan
|
# Posté le 17/05/2007 19:01:22 |
WRYYYYYYYY !!![]() Groupe : Membres |
oula c'est puissant !
Secret (cliquez pour afficher) 20.005/20 ! Tutoriel en cours de rédaction : Rpg Maker XP : Maîtriser les évènements Projets:[QT + C++] Openpad, un éditeur de texte avancé : 100% v1.3 |~| [QT + C++] Open maker, un rpg maker se rapprochant de Rpg Maker XP : 5% |~| [C++] Mazen, un générateur de donjons et/ou labyrinthes : 100% >> The daily WTF << ConvertirSimpleQuoteEtDoubleQuoteEnCaracteresAscii |
ddx39
|
# Posté le 17/05/2007 19:45:08 |
![]() Groupe : Membres |
Beau travail
![]() |
psychoh13
|
# Posté le 17/05/2007 20:02:58 |
L'esprit surpasse le corps !![]() Groupe : Membres |
je voudrais savoir... ne serait-il pas plus simple de mettre les valeurs par défaut dans la déclaration de la classe et de supprimer le constructeur par défaut comme suit :
Code : C++ class Duree
{ public : Duree(int heures = 0, int minutes = 0, int secondes = 0); private : int m_heures; int m_minutes; int m_secondes; }; plutôt que d'écrire ça qui fait écrire deux constructeur exactement pareil à ceci prés que l'un a des valeurs par défaut et l'autre aucune valeur ? Code : C++ Duree::Duree() : m_heures(0), m_minutes(0), m_secondes(0)
{ } Duree::Duree(int heures = 0, int minutes = 0, int secondes = 0) : m_heures(heures), m_minutes(minutes), m_secondes(secondes) { } Étant donné qu'un constructeur qui a des valeurs par défaut pour chacun de ses arguments fait office de constructeur par défaut... ¡ Psycho !
Tutoriel Programmation Mac disponible ! Meilleur langage objet : Objective-C
Meilleur langage procédural : C Meilleure API : Cocoa Meilleur IDE : Xcode Meilleure plate-forme : Mac OS X |
BlastRock
|
# Posté le 17/05/2007 20:34:40 |
|
Groupe : Membres |
Bon tuto à part un petit point
Citation : M@teo21 Tous ces opérateurs de comparaison ont un point en commun particulier : ils renvoient un booléen
J'ai fait un petit programme de test où l'operateur == revoie une std::string, ça fonctionne. Mais je sais pas si c'est autorisé par l'ISO et les autres normes, je sais encore moins si c'est utile mais ça fonctionne.
Pour tester : Code : C++ #include <string> #include <iostream> class truc { public: std::string operator==(truc& o) { return "aa"; } }; int main () { truc a, b; std::cout << (a == b) << std::endl; } Ça marche avec gcc 4.1.1-r3. Donc, pour ce tuto, 19/20
|
B2Moo
|
# Posté le 17/05/2007 22:03:37 |
JS ? où ça ? où ça ??!!![]() Groupe : Membres |
Je comprend pas:Code : C++ Duree Duree::operator=(const Duree &duree) Si le type de la méthode est Duree, il ne devrait pas y avoir un return ?
{ m_heures = duree.m_heures; m_minutes = duree.m_minutes; m_secondes = duree.m_secondes; } Je ne ponds pas vos scripts !! Je veux bien vous aider par contre (cot cot) , à condition d'expliquer clairement votre problème: exemple, codes, et surtout messages d'erreursbig-tuto sur la gestion de la souris en js. |
Vizigr0u
|
# Posté le 18/05/2007 02:23:52 |
fooo !![]() Groupe : Membres |
Le tuto est comme d'habitude très bien expliqué etc...
Mais je me suis posé une question en lisant : comment le compilateur traite-t-il les priorités entre les opérateurs ? Bon après avoir testé en faisant objet * objet1 + objet2 j'ai vu que C++ distributait tout seul les priorités : * passe avant + etc... Citation : M@téo21 Code : C++ m'avait en effet laissé penser que le compilateur effectuait un parenthésage implicite à droite (enfin bon il fait les opérations de droite à gauche quoi resultat = duree1 + duree2 + duree3 revient à écrireCode : C++resultat = duree1.operator+(duree2.operator+(duree3)); ) J'ai donc pensé que ca serait bien de préciser que les opérateurs gardent leur priorité lors de la surcharge d'opérateur (à moins que je ne sois le seul à m'être posé la question mais j'en doute, ou alors ils viendront, si si ...)
Bon sinon pas vraiment d'autre remarque mis à part que je trouve que les fonctions de comparaisons sont codées assez lourdement et seraient plus claires en abrégeant la 1ere par Code : C++ bool Duree::operator==(const Duree &duree) et la 2nde par Code : C++{ return (m_heures == duree.m_heures && m_minutes == duree.m_minutes && m_secondes == duree.m_secondes); } bool Duree::operator<(const Duree &duree) Mais bon j'imagine que ce sont des habitudes qui font que l'on lit mieux un code codé d'une façon ou d'une autre { if (m_heures < duree.m_heures) return true; if (m_heures == duree.m_heures && m_minutes < duree.m_minutes) return true; if (m_heures == duree.m_heures && m_minutes == duree.m_minutes && m_secondes < duree.m_secondes) return true; return false; } (remarquez que je n'ai pas tout mis dans une seule condition pour la 2ème quand même, non honêtement je trouve ca plus clair de ma manière mais bon je ne peux pas prétendre avoir l'expérience suffisante du code pour critiquer les autres méthodes)
Enfin bon comme d'habitude c'est un point que je n'avais jamais cherché à apprendre avant de lire le tuto, et c'est clair, bien expliqué, pas trop lourd et ça aborde l'essentiel des points du sujet je trouve... Hm mon PC a rebooté et je ne savais plus si j'avais posté ou pas de commentaire avant qu'il plante ou s'il avait planté pendant la rédaction mais je commence à me dire qu'en fait j'avais posté et que les commentaires sont désactivés sur les tutos officiels comme je n'en vois aucun sur les autres, donc bon ce commentaire risque de faire un peu radottage... |
ryan07
|
# Posté le 18/05/2007 10:53:14 |
|
Groupe : Bannis |
Super
|
rodulphe
|
# Posté le 18/05/2007 12:21:26 |
|
Groupe : Membres |
Je galérais sur les opérateurs comme sur les pointeurs.J'ai lu pendant 20 min ton tuto et hop tout capté !!! Merci !!!! Parfait le choix de la durée !!!! 20/20 |
Nyxem
|
# Posté le 18/05/2007 14:57:47 |
ou pas![]() Groupe : Membres |
Plutot que de prendre des assesseurs on peut tout simplement déclarer la surcharge d'opérateur comme méthode 'amie' de la classe.
dans le .h : Code : C++ friend ostream &operator<<(ostream &out, Duree &duree); |
M@teo21
|
# Posté le 18/05/2007 17:37:17 |
Doh ! Nuts. Mmh, donuts !![]() ![]() |
Oui mais j'ai volontairement refusé de parler des friend dans le cours pour un certain nombre de bonnes raisons
Ce qui se conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément. Nicolas Boileau (je suis fan) Autobiographe à ses heures perdues ![]() |
tTz
|
# Posté le 18/05/2007 22:33:43 |
|
Groupe : Membres |
oulala la puissance
Merci Mathéo ! Théo.
ps : j'hackerai bien le site afin de mettre 30 / 20 (je rigole bien sure )
|
mrbuisson
|
# Posté le 19/05/2007 15:59:22 |
![]() Groupe : Membres |
ya pas a dire ... c'est bô ...
que de problème je viens de résoudre avec cette surcharge d'opérateur
en plus sa permet au code d'etre plus clair et je trouve que sommer des objet comme sa c'est la classe (uhu) ok je sort ... chapeau ! La nature les fleurs et les ordinateurs |
psychoh13
|
# Posté le 22/05/2007 15:42:35 |
L'esprit surpasse le corps !![]() Groupe : Membres |
M@TÉO : tu t'es trompé !
Tu n'as pas de constructeur par défaut dans ta source ! Il ne faut pas faire ça : Code : C++ #ifndef DEF_DUREE
#define DEF_DUREE class Duree { public: // Aucun constructeur par défaut ! Duree(int heures, int minutes, int secondes); private: int m_heures; int m_minutes; int m_secondes; }; #endif #include "Duree.h" Duree::Duree(int heures = 0, int minutes = 0, int secondes = 0) : m_heures(heures), m_minutes(minutes), m_secondes(secondes) { } Mais il faut faire ça : Code : C++ #ifndef DEF_DUREE
#define DEF_DUREE class Duree { public: // Les valeurs par défaut doivent se trouver dans la DÉCLARATION de la classe... Duree(int heures = 0, int minutes = 0, int secondes = 0); private: int m_heures; int m_minutes; int m_secondes; }; #endif #include "Duree.h" Duree::Duree(int heures, int minutes, int secondes) : m_heures(heures), m_minutes(minutes), m_secondes(secondes) { } Les valeurs par défaut doivent se trouver dans la DÉCLARATION de la classe...
¡ Psycho !
Tutoriel Programmation Mac disponible ! Meilleur langage objet : Objective-C
Meilleur langage procédural : C Meilleure API : Cocoa Meilleur IDE : Xcode Meilleure plate-forme : Mac OS X |
SiMonkey
|
# Posté le 22/05/2007 18:10:36 |
IVe internationale !![]() Groupe : Membres |
Trés chouette chapitre
sinon multiplier des durées peut-être utilisé, en physique le t² est souvent utilisé (mais c'est vrai que ça reste en seconde )
Citation : Marx Les philosophes n'ont fait qu'interpréter diversement le monde, il s'agit maintenant de le transformer. |
lmghs
|
# Posté le 22/05/2007 23:30:59 |
|
Groupe : Membres |
Oups. J'avais complètement zappé où devaient aller les commentaires. Mea maxima culpa. Je mets le lien vers ma note: -> http://www.siteduzero.com/forum-83-174 [...] html#r1346053 Petites précisions supplémentaires au sujet des valeurs par défaut pour les paramètres -> http://www.siteduzero.com/forum-83-174 [...] html#r1349460 EDIT: maj des liens |
smilz
|
# Posté le 23/05/2007 16:02:45 |
La vie est une blague![]() Groupe : Membres |
Super, je comprend enfin vraiment comme la classe string faisait tous ces super truc, je crois que je vait me la programmer
Elle sera (légèrement) moins optimiser mais bon
Rejoignez la team TMN du sdz ! Merci pour mon oncle (auteur, compositeur, interprète) http://ericmaliet.com |
congelli501
|
# Posté le 03/06/2007 12:23:35 |
![]() Groupe : Membres |
Excellent tuto, vivement le prochain !
Note : 20/20. On dit que la Grèce antique beaucoup d'influence sur notre culture... C'est vrai : la chute d'Athènes a eu lieu en 404 avant JC. Ca vous rappelle quelque chose ? Si non, aller ici. |
shadosan
|
# Posté le 09/06/2007 01:43:17 |
WRYYYYYYYY !!![]() Groupe : Membres |
Petite remarque :
on peut surcharger ++ . exemple : duree++; ++duree; on doit simplement faire ceci : pour ++duree : Code : C++ void Duree::operator++()
et pour duree++ : Code : C++ void Duree::operator++(int n)
on peux faire pareil avec --
seul chose que je ne sais pas, c'est l'utilité du "int" dans le second code...
(vue que j'ai déjà noté, je ne re-noterai pas )
Tutoriel en cours de rédaction : Rpg Maker XP : Maîtriser les évènements Projets:[QT + C++] Openpad, un éditeur de texte avancé : 100% v1.3 |~| [QT + C++] Open maker, un rpg maker se rapprochant de Rpg Maker XP : 5% |~| [C++] Mazen, un générateur de donjons et/ou labyrinthes : 100% >> The daily WTF << ConvertirSimpleQuoteEtDoubleQuoteEnCaracteresAscii |
Bigslider
|
# Posté le 09/06/2007 15:09:28 |
|
Groupe : Membres |
Bonjour Merci beaucoup pour ce super tuto
|
remram44
|
# Posté le 16/06/2007 23:02:09 |
§ KCOMDL §![]() Groupe : Membres |
Un machin que je comprends pas, c'est pourquoi faire des opérateurs membres de la classe ?
Il me parait plus logique (c'est mon avis hein) de faire operator+(a, b) que a.operator+(b) surtout que ca correspond au prototype de la fonction "additionner()" dont tu parles au début du tuto. Un oubli ? Ou tout simplement ne connais tu pas cette notation ? Code : C++ class Truc {
friend Truc operator+(const Truc&, const Truc&); private: int A, B; public: Truc(int a=0, int b=0); }; Truc::Truc(int a, int b) : A(a), B(b) { } Truc operator+(const Truc &a, const Truc &b) { return Truc(a.A + b.A, a.B + b.B); } int main() { Truc t1, t2; Truc t3 = t1 + t2; return 0; } Je sais très bien M@teo21 que tu ignores complètement mes commentaires désormais, comme tu me l'as annoncé si poliment sur je ne sais plus quel topic. Aussi si quelqu'un avait la bonté de lui répeter ce commentaire, ce serait sans doute utile. Remarque également, tu ne parles pas des opérateurs unaires (c'est à dire * & + - ! () -- et ++ qui sont intéressants car existent en versions préfixée et postfixée). Pour ceux que ça intéresse, pour différencier les deux versions de ++ et -- on passe un paramètre à la méthode, de type int (qui ne doit pas être utilisé). |
SpotZup
|
# Posté le 28/06/2007 02:43:16 |
Ceci est un panda![]() Groupe : Membres |
Super tuto, ça m'a vraiment intéressé et on sens bien qu'on avance, il nous faudrait presque un petit TP là (je sais, pourquoi demander quand on peut le faire tout seul ^^). Il reste pourtant une point qui me gène, lorque tu fais
Code : C++ ostream &operator<<( ostream &out, Duree &duree )
{ duree.afficher(out) ; return out; } Pourquoi ne pas faire tout simplement ce qui suit ? Code : C++ ostream &operator<<( ostream &out, Duree &duree )
{ duree.afficher(); return out; } Je suppose qu'il y a une bonne raison vu que je suis le seul que ça gène et que je débute, mais bon tout ce que je constate, c'est que ça marche. Et puis le "return out" je comprend pas à quoi il sert exactement puisqu'on à le même résultat sans lui (même en chaînant cout << duree1 << duree2...). Si quelqu'un passe par là et peut me répondre je lui serait très reconnaissant de m'envoyer un MP ou de l'écrire ici
Sinon, un petit truc sympa est de remplacer le contenu de la méthode afficher() par Code : C Ce qui permet d'afficher toujours deux chiffres, même si c'est des zéros (03:36:00 par exemple). Je sais que tu le sais, mais pourquoi ne pas le dire à tous ?
----------= Diviser pour Régner =------------ >> ActionScripteur de 3ème génération << |
lmghs
|
# Posté le 28/06/2007 23:30:26 |
|
Groupe : Membres |
@SpotZup: La fonction affiche() prend en argument le flux destination où seront inscrits les résultats : que cela soit std::cout, un fichier, un stringstream ou tout autre flux plus évolué.
Sans argument, tu n'as plus accès au flux destination de l'opérateur d'injection (<<). Du coup, tu te retrouves à devoir faire un printf pour envoyer ... à l'écran et non vers le flux qui va bien. Quant au "return out", sans lui ton compilo devrait refuser de compiler, et sans lui, rien ne sera envoyé au flux destinataire sur la seconde injection. Concernant le formatage, sur le flux on utilise les formateurs de <iomanip> (si mes souvenirs sont bons, ils sont traités dans la FAQ C++ de developpez). @remram44, tes remarques ont déjà été partiellement adressées dans de précédents posts -- j'ai même signalé l'écriture canonique avec +() (libre) écrit autour de +=() (membre). Je suppose que Matthéo n'a guère le temps de patcher son tuto pour l'instant, d'autant qu'il y avait une erreur plus génante (sur les valeurs par défaut pour paramètres des contructeurs) |
genie2
|
# Posté le 28/08/2007 22:40:34 |
|
Groupe : Bannis |
mais vraiment c'est nul Citation : allez savoir pourquoi! je rigole je donne 18/20 |
Dr.Tenma
|
# Posté le 29/08/2007 23:36:06 |
|
Groupe : Membres |
Moi je bloque et ya plein de chose que je pige pas, comme par exemple pourquoi mettre Duree Duree::operator+(......), pourquoi a t-on mis Duree au lieu de int/voir/rien Et en plus je m'y perd, comme par exemple les reference c'est dur. je trouve que l'orienté objet c'est trop compliqué. ZBlack Skin For SdZzzz : http://sdz-designs.123.fr/zBlack |
Sareth
|
# Posté le 08/09/2007 13:30:17 |
|
Groupe : Membres |
je connaissais le langage C, maintenant je connais plein de choses en C++ ! explications claires, choix des exemples pertinent... merci M@teo ! |
c-sharp
|
# Posté le 30/09/2007 19:38:18 |
le C/C++ j'en mange![]() Groupe : Bannis |
ce tuto manque cruellement d'informations(tu ne parles pas de friends...)
<ta Qu'est ce que vous regardez? |
zepiwane
|
# Posté le 13/03/2008 13:47:38 |
|
Groupe : Membres |
Coucou D'abord, ce tuto est super. J'ai appris le C/C++ en BTS IRIS ya 2 ans et ce tuto m'a rafraichi la mémoire sur de nombreux points ; et malgrès ce que certains disent, ils est très complet. Je lis tout et fais des exos de ce tuto 6 heures par jours minimum ! Bref, j'ai une question : quand tu parles de la surcharge de l'opérateur (*), manque-t-il 'const' devant 'int'? : Citation : M@teo21 Duree operator*(int nombre); Tu peux retrouver ce passage 3 lignes avant ceci : http://www.siteduzero.com/tuto-3-16681-1-la-surcharge-d-operateurs.html#ss_part_3 Je sais que ce n'ai pas très important, c'est pour la forme ![]() Je n'ai pas la possibilité d'avoir un compilo pour le moment je fais tout avec notepad++ et ne peux donc pas vérifier avec compil.Merci pour ta réponse et pour tous ces tutoriels (20/20) !
|
Vous devez être inscrit pour pouvoir poster des messages
Changer de design |
En savoir plus |
Plan du site |
Politique d'accessibilité |
Règles |
Fil RSS |
XHTML 1.0 |
CSS 2.0
Édité par Simple IT SARL :
Nous contacter
| Revue de presse | Publicité
Y'a plus rien à lire, faut remonter maintenant !
Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.
416 Zéros connectés |
7 requêtes |
0.126s (0.1131s)
