Accueil > Forum > > > > la creation d'objets en c++
la creation d'objets en c++
mercredi 10 août 2005 à 14:56:11 |
la creation d'objets en c++

whikie
|
Bonjour a tous,
Je suis toujours en train d'apprendre les bases du c++, et la je me lance pour creer des objets. Je voudrais creer des objets 'cartes a jouer' je suis arrivé a creer ces objets mais je ne dois pas bien m'y prendre. en effet j'ai fait un petit programme pour verifier et ... deux surprises que je ne comprend pas si quelqu'un veut bien m'expliquer 1) quand je me sers de de la fonction 'afficheCartes' je passe par le destructeur ... ??? 2) j'arrive a acceder a un objet pas crée ??? je m'explique j'ai cree 52 cartes : Cartes test[52] et j'arrive a la variable de la carte test[-1].Culeur sans planter le programme???
je ne sais pas si je suis bien clair ...
voici le code : #include <iostream> using namespace std; enum eCouleur{pique,coeur,carreau,trefle}; class Cartes { public: Cartes(); ~Cartes(); eCouleur Culeur; int Valeur; Cartes *pSuivante; void afficheCarte(Cartes param); }; Cartes::~Cartes() { cout <<"bye bye"; //system ("pause"); } void Cartes::afficheCarte(Cartes param) {cout<<"compris"<<param.Culeur; } Cartes::Cartes() { pSuivante=0; Culeur=coeur; Valeur=0; } int main() { int couleur=0,valeur=0,compt=0; Cartes test[52]; cout<<"Couleur de la premiere carte :"<<test[0].Culeur<<"\n"; test[0].afficheCarte(test[0]); cout<<"fin de test"; cout<<test[0].pSuivante<<"\n"; for (couleur=0;couleur<4;++couleur) for (valeur=1;valeur<14;++valeur) {cout<<&test[compt]<<" adresse de test\n"<<"b="<<compt<<"\n"; test[compt].Culeur=eCouleur(couleur); test[compt].Valeur=valeur; cout <<" ATTENTION ICI compt= :"<<(compt-1)<<"\n"; test[compt-1].pSuivante=&test[compt]; compt++; cout<<"compt ="<<compt<<" Couleur ="<<couleur<<"Valeur ="<<valeur<<"\n"; system ("pause"); } test[1].pSuivante= &test[0]; cout<<test[1].Culeur<<"\n"; cout<<test[1].pSuivante<<" adresse de la carte precedente\n"; system("pause"); return 0; } je suis sous Xp et avec DevCpp 4.9.9.2
Merci d'avance
|
|
mercredi 10 août 2005 à 15:02:48 |
Re : la creation d'objets en c++

buno
|
Réponse acceptée !
Si tu utilise un objet carte dans la fonction afficheCartes, il est normal que tu passe par le destructeur de cet objet en quittant la fonction.
Ensuite, le fait d'accéder à test[-1] est possible MAIS CE N'EST PAS UNE CARTE!!! En dehors de ton tableau, tu touche à la mémoire qui n'a, a priori, rien à voir avec tes cartes. Si tu tombe vraiment sur une carte, considère ça comme un coup de bol...
Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 10 août 2005 à 15:17:04 |
Re : la creation d'objets en c++

whikie
|
Salut,
Merci pour ta reponse rapide. D'accord si je passe par une des fonctions de ma classe je passe obligatoirement par le destructeur ???? Ca me parait surprenant c'est quand meme moi qui doit decider a quel moment je veux detruire mon objet non ?
Je croyais que le fait de declarer Cartes test[52] me creait 52 objets cartes donc je n'ai pas encore compris la creation d'objets ( je m'en doutais )
je suppose que je dois passer par new mais je n'arrive a comprendre la syntaxe a utiliser pour creer un tableau de 52 cartes.
whikie
|
|
mercredi 10 août 2005 à 15:20:17 |
Re : la creation d'objets en c++

steve_clamage
|
Réponse acceptée !
"Je croyais que le fait de declarer Cartes test[52] me creait 52 objets cartes" c'est vrai, et pour affiche : void Cartes::afficheCarte() {cout<<"compris"<<Culeur; }
|
|
mercredi 10 août 2005 à 15:30:04 |
Re : la creation d'objets en c++

buno
|
Réponse acceptée !
Désolé si je me suis mal fait comprendre pour le coup du destructeur.
En fait, voilà:
void afficherCartes() { Cartes temp; // création d'un objet carte, local à la fonction
/* blabla */ } // ici, les objets locaux sont détruits: appel au destructeur de temp
Il vaut mieux faire ta fonction sur l'exemple de steve_clamage car, a priori, tu n'as pas besoin d'un objet Carte local...
Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 10 août 2005 à 15:34:18 |
Re : la creation d'objets en c++

whikie
|
oki merci beaucoup
Mais alors comment je fais pour etre sur d'acceder a mes objets dans un tableau d'objets ?
Pour moi le fait de declarer Cartes test[52] je cree 52 cartes qui vont de test[0] a test[51] et en aucun cas je declare test[-1].
Si test[-1] n'est pas declaré je ne devrais pas pouvoir y acceder non ?
|
|
mercredi 10 août 2005 à 15:59:06 |
Re : la creation d'objets en c++

buno
|
Réponse acceptée !
Explication: - je déclare un tableau de 10 chiffres que j'initialise comme suit: 0,1,2,3,4,5,6,7,8,9 - en mémoire, j'ai ça: a-b-c-0-1-2-3-4-5-6-7-8-9-d-e-f-g
Quand tu écris tab[i], tu essaie d'accéder en fait à la case mémoire d'adresse tab+i (tab étant l'adresse du 1er élément du tableau). Donc: tab[2] --> accès à la case d'adresse tab+2, contenu=2 tab[10] --> accès à la case d'adresse tab+10, contenu=d (ce n'est pas à toi)
Pour ne pas que cela arrive, il faut soit que tu sache exactement le nombre d'objets dans ton tableau, soit que tu sois capable de reconnaitre le dernier élément
C'est plus clair? Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 10 août 2005 à 16:09:14 |
Re : la creation d'objets en c++

whikie
|
oui merci encore  Ayant lu que le c++ etait 'fortement typé' je m'attendais a ce que le compilateur me surveille du coin de l'oeil et me previenne de mes etourderis mais je vois que c'est le contraire ...  A bientot
|
|
mercredi 10 août 2005 à 16:14:36 |
Re : la creation d'objets en c++

steve_clamage
|
Réponse acceptée !
Ca n'a rien a voir avec la force du typage, c'est le mode unsafe qui permet de jouer avec les pointeurs, comme buno l'a expliqué, tab[2] est juste un sucre syntaxique pour *(tab + 2), le compilateur ne pourra jamais t'empecher de faire tab - 1.
|
|
Cette discussion est classée dans : valeur, test, cout, cartes, compt
Répondre à ce message
Sujets en rapport avec ce message
monObjet test = valeur; <- Comment faire svp ? [ par Bub325 ]
je cherche donner une valeur à mon objet dès l'initialisation, car operato= ne marche que après. donc comment faire svp ?Merci beaucoup pour vos répon
CcomboBox valeur par defaut [ par shaolinn ]
hello Comment fait ton pour mettre une valeur par defaut dans une combobox au moment de l'affichageCCombobox test ;et apres c qu'elle methode?test.???
entrer une valeur ou appuyer sur Enter pour celle par defaut [ par bastet1978 ]
Bonjour voila je dois recuperer des valeurs ou les definir si l'utilsateur tappes sur Enter. J'ai 3 questions donc trois boucles demandant trois vale
Problème de concaténation ( débutant :p ) [ par t0ine ]
Voila je voudrais concaténer des chars ==> voir plus bas . J'aimerais qu'au palindromeD se rajoute tout ce k'il y a dans la PalindromM , etc .... Si q
DevCpp capricieux ? bug étrange... [ par nollyflip ]
Bonjour,J'ai un comportement étrange (et pour le moins énervant) de dev cpp, je me dis que ce bug est peut-être connu et résolu. J'ai la 4.9.9.2 (dern
urgent svp exo sur les tableaux [ par blastmanu ]
bonjour tt le monde voila mon probleme:Soit un tableau Tab1 de taille maxi Tmax=35 On veut:-Remplir Tab1 en demandant les valeur a l'utilisateur. Le n
besoin d'aide [ par zhao77 ]
Bonjour a tous ,voila j'ai un probleme que je n'arive pas a resoudre prenons ce bout de programme :fichier = fopen ("/sauvegarde/test.txt", "a+") ;if
Client(c++Builder)/Serveur(linux) [ par willixs ]
Bonjour j'ai fait un socket client sur c++ builder et un serveur socket sur linux mais j'ai un probleme c'est que j'ai créé un tableau de caractères s
Appler une structure dans une fonction ... [ par eldered ]
Salut !!Alors mon pb est le suivant :J'ai cré une fonction qui me permet un certain nombre de chose en autre trouver si un element appartient a un tab
Probleme avec If et else [ par violatorstrain2 ]
Bonjours a tous voici un bout de code d'un convertisseur hexadecimal, octal, et decimal :#include<font color="#a
Livres en rapport
|
Derniers Blogs
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 REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
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
|