C++ pointeur, constructeur, attributs
Résolu/Fermé
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
-
3 juil. 2009 à 20:02
Mactor Messages postés 292 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 10 septembre 2016 - 5 oct. 2009 à 17:15
Mactor Messages postés 292 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 10 septembre 2016 - 5 oct. 2009 à 17:15
A voir également:
- Diskpart n'a pas pu effacer les attributs de disque
- Cloner disque dur - Guide
- Defragmenter disque dur - Guide
- Diskpart commande - Guide
- Nettoyage de disque - Guide
- Effacer les cookies - Guide
15 réponses
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
28 sept. 2009 à 21:51
28 sept. 2009 à 21:51
J'ai cherché un peu plus, qu'en pensez vous ?
class animal
{private: // A ne pas oublier! POO=encapsulation=>il faut préciser si c'est du public, private, protected.
int m_age;
char nom[11];//Ca devrait aller pour la chaine de caractère nom... ?
public: // A ne pas oublier! POO=encapsulation=>il faut préciser si c'est du public, private, protected.
//Les constructeurs:
animal(int);
animal(*animal);
animal(&animal);
//Les autres méthodes:
void affiche(animal);
void initage(animal);
//Le destructeur: optionnel ici?};
//Les méthodes: il reste à écrire ce qu'elles font... Et les appeler dans le main.
Je n'ai pas encore fait beaucoup de C++, donc sous réserves d'erreurs ^^" !
class animal
{private: // A ne pas oublier! POO=encapsulation=>il faut préciser si c'est du public, private, protected.
int m_age;
char nom[11];//Ca devrait aller pour la chaine de caractère nom... ?
public: // A ne pas oublier! POO=encapsulation=>il faut préciser si c'est du public, private, protected.
//Les constructeurs:
animal(int);
animal(*animal);
animal(&animal);
//Les autres méthodes:
void affiche(animal);
void initage(animal);
//Le destructeur: optionnel ici?};
//Les méthodes: il reste à écrire ce qu'elles font... Et les appeler dans le main.
Je n'ai pas encore fait beaucoup de C++, donc sous réserves d'erreurs ^^" !
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
5 oct. 2009 à 17:15
5 oct. 2009 à 17:15
merci beaucoup, cela m'aide énormément...
je travaille sur cette base, et grace à toi je progresse
1000 fois merci ! ! !
je travaille sur cette base, et grace à toi je progresse
1000 fois merci ! ! !
watou
Messages postés
199
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
19 avril 2013
28
29 sept. 2009 à 00:17
29 sept. 2009 à 00:17
je vais essayer de t'aider !!
et voici un petit exemple !! :
class animal { private : // tu n'es pas oblige de le priciser // quand tu declare ta classe avec "class" par defaut c private //par contre si tu la declare struct , par default c public !!! int m_age; char nom[11]; public : // c oblige !! //Les constructeurs animal(int); animal(int , char[]); // il vaut mieux comme ca !! :) animal(animal &); //Les autres méthodes void affiche(); // tu n'est oblige de transmettre un type animal !! void initage(int ); }; // definition des constructeurs animal::animal(int a) { m_age = a ; nom[0] = '\0'; } animal::animal(int a,char name[]) { m_age = a ; strcpy(nom,name); } animal::animal(animal & anim) { m_age = anim.m_age; strcpy(nom,anim.nom); } void animal::affiche() { cout << "le nom : " << nom << endl ; cout << "l'age : " << m_age << endl ; } void animal::initage(int a) { m_age = a; }
et voici un petit exemple !! :
animal chat(5); animal chat1(7,"minouche"); animal chat2(chat1); chat.affiche(); chat.initage(8); chat.affiche(); chat1.affiche(); chat2.affiche();
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
29 sept. 2009 à 08:54
29 sept. 2009 à 08:54
je te remercie pour ta réponse, je vais l'étudier de près et voir mes erreurs.
merci de m'apporter ton aide, je débute et cela m'aide à progresser
j'ai aussi la 2eme partie et je t'en ferais part
merci de m'apporter ton aide, je débute et cela m'aide à progresser
j'ai aussi la 2eme partie et je t'en ferais part
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
29 sept. 2009 à 14:14
29 sept. 2009 à 14:14
animal::animal(int a,char name[])
{
m_age = a ;
strcpy(nom,name);
}
que ce passe - t - il si tu asses une chaine trop longue? => buffer overflow (enfin, ca marchera, jusqu'au jour ou ca marcehra pas)
je te conseille donc de vérifier la taille de la chaine avec un strlen avant de faire la copie ...
{
m_age = a ;
strcpy(nom,name);
}
que ce passe - t - il si tu asses une chaine trop longue? => buffer overflow (enfin, ca marchera, jusqu'au jour ou ca marcehra pas)
je te conseille donc de vérifier la taille de la chaine avec un strlen avant de faire la copie ...
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
29 sept. 2009 à 21:38
29 sept. 2009 à 21:38
voila la 2eme partie, c'est une notion d'heritage mais ça reste confus pour moi
Soit la class domestique qui derive de animal et qui a un attribut identifiant entier
Domestique a un constructeur qui a pour parametre deux entiers et une fonction membre affiche
qui affiche ses parametres
Faire une fonction main utilisant l'ensemble de ses fonctions Membre
avec Domestique D;
Domestique *Dm;
Soit la class domestique qui derive de animal et qui a un attribut identifiant entier
Domestique a un constructeur qui a pour parametre deux entiers et une fonction membre affiche
qui affiche ses parametres
Faire une fonction main utilisant l'ensemble de ses fonctions Membre
avec Domestique D;
Domestique *Dm;
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
30 sept. 2009 à 09:31
30 sept. 2009 à 09:31
tu sais, on ne vas pas non plus te faire tes exos, on peux te donenr un coup de main, corriger, dire ce qui va pas, mais on ne fait pas les exo ici ..
dis nous ce qui pose problème, montres ce que tu as essayé de faire, et on verra
dis nous ce qui pose problème, montres ce que tu as essayé de faire, et on verra
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
30 sept. 2009 à 17:11
30 sept. 2009 à 17:11
Merci Nabla's mais je ne suis pas dans cette logique.
Je vais faire cette 2ème partie
Je vais faire cette 2ème partie
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
30 sept. 2009 à 17:15
30 sept. 2009 à 17:15
essayes de faire quelque chose, au moins de dire comment tu comptes t'y prendre, ce que t'as comprit de l'exo (bref, montrer que tu attends pas de réponses toutes prêtes) et je t'aiderai avec plaisir (regardes, plus haut je t'ai déja fait une remarque constructive sur un bug que tu pourrais avoir)
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
1 oct. 2009 à 18:28
1 oct. 2009 à 18:28
Soit la class domestique qui derive de animal et qui a un attribut identifiant entier
Domestique a un constructeur qui a pour parametre deux entiers et une fonction membre affiche
qui affiche ses parametres
Faire une fonction main utilisant l'ensemble de ses fonctions Membre
avec Domestique D;
Domestique *Dm;
class domestique
{
public :
Animal*animal;
domestique (Animal* A)
Domestique : : domestique (int a int b)
void domestique : : affiche()
{
cout<<"le nom :"<<nom<<endl;
cout <<"l'age:"<<m-age<<endl;
Domestique a un constructeur qui a pour parametre deux entiers et une fonction membre affiche
qui affiche ses parametres
Faire une fonction main utilisant l'ensemble de ses fonctions Membre
avec Domestique D;
Domestique *Dm;
class domestique
{
public :
Animal*animal;
domestique (Animal* A)
Domestique : : domestique (int a int b)
void domestique : : affiche()
{
cout<<"le nom :"<<nom<<endl;
cout <<"l'age:"<<m-age<<endl;
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
1 oct. 2009 à 18:42
1 oct. 2009 à 18:42
pour faire ton héritage, c'est comme ca:
class domestique : public animal
{
...
}
class domestique : public animal
{
...
}
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
1 oct. 2009 à 18:56
1 oct. 2009 à 18:56
class domestique : public animal // ok je commence par la et ensuite je poursuis avec le code
est ce que la suite est ok ?
est ce que la suite est ok ?
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
2 oct. 2009 à 15:41
2 oct. 2009 à 15:41
Bonjour
J'aimerai connaitre votre avis sur ma soluce
n'ayant pas de réponse, je crains que le code ne soit pas vraiment comment dire, dans l'esprit du c++
un petit coup de main me mettra sur les rails.merci d'avance
J'aimerai connaitre votre avis sur ma soluce
n'ayant pas de réponse, je crains que le code ne soit pas vraiment comment dire, dans l'esprit du c++
un petit coup de main me mettra sur les rails.merci d'avance
Nabla's
Messages postés
18203
Date d'inscription
mercredi 4 juin 2008
Statut
Contributeur
Dernière intervention
28 avril 2014
3 193
2 oct. 2009 à 15:45
2 oct. 2009 à 15:45
la suite a pas l'air fausse, mise à part le m-age que tu as déclarré comme étant m_age plus haut ...
Mactor
Messages postés
292
Date d'inscription
mercredi 17 septembre 2008
Statut
Membre
Dernière intervention
10 septembre 2016
4
2 oct. 2009 à 20:35
2 oct. 2009 à 20:35
class domestique : public animal
{
public
int
domestique (int a, int b)
void affiche ();
void int ;
{
public
int
domestique (int a, int b)
void affiche ();
void int ;
watou
Messages postés
199
Date d'inscription
vendredi 27 juin 2008
Statut
Membre
Dernière intervention
19 avril 2013
28
2 oct. 2009 à 23:39
2 oct. 2009 à 23:39
désolé pour le retard.
j'ai essayer de repondre à l'enoncé :
un exemple sur tout ça :
ps : suite du premier code .
j'ai essayer de repondre à l'enoncé :
class domestique : public animal { int id; // idnetifiant de la classe public : domestique(int,int); // constructeur de la classe !! void affiche(); }; domestique::domestique(int age,int identif) :animal(age) // ici il faut spécifier quel constructeur de la classe // de base (la classe animal) appeler { // ici je suppose que le 1er c'est l'age // et l'autre c'est l'indentifiant. id = identif; } void domestique::affiche() { animal::affiche(); // pour acceder a la fonction affiche de la classe animal /* si tu fais : cout << nom ; cout << m_age; c'est faut ! parceque tu ne peux pas acceder aux membre déclarés private dans ta classe de base !! nom et m_age ne sont par defaut private. */ cout << "l'indentifiant : " << id << endl; }
un exemple sur tout ça :
domestique a(45,52); a.affiche();
ps : suite du premier code .