Accueil > Forum > > > > Prob avec "!"
Prob avec "!"
jeudi 25 mars 2004 à 06:52:32 |
Prob avec "!"

saturne_1606
|
Bonjour a tous! Voila, mon prob est que g créer une classe qui permet de manipuler des ensembles d'entier. Et là, g une fonction membre qui vérifie si 2 ensembles sont égaux qui est codé comme ceci : bool ens_entiers::operator ==(ens_entiers e) { if (nb!=e.card()) return false; for(int i=0;i<nb;i++) { if ((e[tab[i]])==0) return false; } return true; }
|
je precise que ma classe est la suivante : class ens_entiers { private : int *tab; int nb; public : ens_entiers(int [] = NULL, int = 0); void operator <(int); int card(); bool operator [](int); bool operator ==(ens_entiers); bool operator !=(ens_entiers); //Rajout d'une fonction pour afficher void affiche(); ~ens_entiers(); };
|
C lors de la définition de la fonction != qu'intervient mon prob. Le code est le suivant : bool ens_entiers::operator !=(ens_entiers e) { return !((*this)==e); }
|
Le prob est que c deux fonctions me renvoie la même valeur de vérité. Et là, g bo chercher mais je trouve pas le prob  Merci de m'accorder votre aide
|
|
jeudi 25 mars 2004 à 15:42:16 |
Re : Prob avec

PunkDude424
|
Je sais pas si cest une faute de frappe ou koi mais ta un espace entre operator et !=.....y faut pas....et de plus tu devrais p-e donner un meilleur nom a tes fonction.....c'est pas tres bine de mettre des signe tel que !, = ou autre dans le nom dune fonction
|
|
jeudi 25 mars 2004 à 20:00:47 |
Re : Prob avec

djl
|
PunkDude424 ==> ben non, la syntaxe de ce qu'il a ecris est correcte "c'est pas tres bine de mettre des signe tel que !, = ou autre dans le nom dune fonction " ==> il s'agit la de la surcharge des operateur en c++
saturne_1606 ==> ton erreur est assez bizar, j'ait fait un test avec une classe (sans pointeurs) et ca marche,
au pir tu redefini l'operateur != sans te servir du ==
bonne chance
|
|
jeudi 25 mars 2004 à 22:01:12 |
Re : Prob avec

saturne_1606
|
merci pour ta reponse djl mais g deja essayer cette possibilité. En fait, aprés plusieurs test je me suis apercu que la fonction == que g defini change le premier element de l'ensemble mis en parametre. Par exemple, si l'ens entrer en para est {4,2,3,1}, aprés l'execution de la fonction, elle sera {2242504,2,3,1}. Cependant, d'aprés mes tests l'ensemble est toujours le mm juste avant le "return true" de la la fin de fonction. Et là, je dis que je comprends plus rien?§?!
Merci pour votre aide
|
|
jeudi 25 mars 2004 à 23:26:56 |
Re : Prob avec

djl
|
ya pourtant un moyen de s'en assurer,
dans ton exemple cette implementation avec passage par reference marchera
bool ens_entiers::operator ==(const ens_entiers& e) const { if (nb!=e.card()) return false; for(int i=0;i<nb;i++) { if ((e[tab[i]])==0) return false; } return true; }
ca marchera car je vien de piger ton erreur, tu passe un ensemble par valeur et tu n'a pas de constructeur par copie donc c'est celui qui est implicitement generer par ton compilo qui est appeler et qd ya un pointeur ca fait boum
quand tu fait une classe qui a un pointeur comme membre pense a redefinir le constructeur, le constructeur par copie, le destructeur, et l'operateur =
|
|
jeudi 25 mars 2004 à 23:34:07 |
Re : Prob avec

saturne_1606
|
Merci bcp pour ton aide djl  En fait g trouver la solution, qui est comme ce que tu as dit : bool ens_entiers::operator ==(ens_entiers &e) { if (nb!=e.card()) return false; for(int i=0;i<nb;i++) { if ((e[tab[i]])==0) return false; } return true; }
|
mais je comprenais pas pourquoi il fallait mettre le &. Grace à toi, maintenant je sais  Merci encore
|
|
jeudi 25 mars 2004 à 23:45:26 |
Re : Prob avec

djl
|
autre solution aussi mais qui est surtout une necessite c'est de redefinir le constructeur par copie ens_entiers(const ens_entiers& e) { nb=e.nb; tab=new int[nb]; for(int i=0;i<nb;i++) tab[i]=e.tab[i]; }
|
et ton operateur pourra marcher ainsi bool ens_entiers::operator ==(ens_entiers e) const { if (nb!=e.card()) return false; for(int i=0;i<nb;i++) { if ((e[tab[i]])==0) return false; } return true; }
|
tu fera attention que la methode est declarer const car l'operateur n'a pas besoin de modifier l'objet cible donc par defaut on le protege avec const de meme lorsque tu passe un objet par reference, c'est sont adresse que tu passe donc si tu le modifie ca sera plus une copie qui est modifié mais l'objet lui meme, c'est pourquoi il est utile de le proteger par un const lorsque tu n'a pas besoin de le modifier bool ens_entiers::operator ==(const ens_entiers &e) const { if (nb!=e.card()) return false; for(int i=0;i<nb;i++) { if ((e[tab[i]])==0) return false; } return true; }
|
a+
|
|
Cette discussion est classée dans : entiers, code, int, operator, ens
Répondre à ce message
Sujets en rapport avec ce message
comment evoyer des entiers par les sockets [ par JRB ]
je n'arrive pas à envoyer des variables declarees integer par socket.j'utilise :int nResult = m_ClientSocket[0].Send(LPCTSTR(strTemp), nSize);
calculatrice matricielle avec boost::shared_array [ par mosaidrd ]
le code ne genere aucune ereur mais il rencotre un problem d'assertion merci pour votre aide voici mon code : [code=cpp] //fichier Matrix.h #ifndef M
Déclarer explicitement une conversion de int => Enum [ par RV2931 ]
Bonjour, J'ai pas mal d'énumération dans mon programme et j'ai souvent besoin de de prendre un simple int en entrée et de le convertir en l'Enumérati
rectification dune code C et/ou aide sur l'algorithme [ par negets ]
bonjour, besoin d'aide; j'aimerai dégager l'algorithme de ce code afin de le programmer sous matlab je connais plus rien en C et C++(je commence à lir
code source en C [ par lyna191 ]
Bonsoir a tous , as que il y quelqu'un parmi vous qui peut m'explique ce code la (explication de la fonction Deplace) ? merci [code=cpp] int Deplac
IntToStr en C [ par RENTMEESTERS ]
bonjour à tous, Je dois convertir un nombre entier INT en une chaîne de caractère qui devra être affichée sur un LCD (*char). J'utilise un 16F887 et
programme puissance suivant le protocole rpc [ par imoum ]
j'ai une structure [code=cpp]param{int a; int b;}; [/code]et j'ai une fonction dans le programme serveur [code=cpp]pui_2_svc(param *argp, struct svc_
utilisation de atoi() [ par ims214 ]
Bonjour, dans mon code j'ai déclaré: [code=cpp]WCHAR Xchar[10][/code] le programme rempli cette chaine à partir d'un index variable, par exemple: [co
sdl et vc++2010 [ par hb2012 ]
slt tout le monde, je sais bien mes amis que c'est pas possible d'afficher une image avec c++. par contre je m'adresse à vous pour savoir s'il existe
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|