begin process at 2012 05 29 15:39:52
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Divers

 > 

Débutant(e)

 > 

petit problème d'héritage...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

petit problème d'héritage...

dimanche 28 mai 2006 à 16:17:53 | petit problème d'héritage...

_deadstar_

Bonjour tout le monde,
Voila comme l'indique le sujet j'ai un petit problème avec l'histoire de classe dérivées.
    - j'ai une classe mère qui contient des données de type Protected (par exemple: Nom, Prénom)
    - j'ai un tableau d'objet de la classe mère, tabO[10] par exemple
    - une classe fille
Dans la classe fille je voudrais pouvoir accéder au membre protected de la classe mere (mais je sais pas trop comment ca marche..)
pour cela j'ai appliqué cette méthode :
dans la classe mere j'ai un fontion"Quel_Nom()"qui me retourne le Nom.
voici ce que je voudrais faire à partir de la classe fille:
cout << "entrez votre nom";
cin >> tabO[n].Quel_Nom();
Mais ca me fait une megas erreur du genre :
ambiguous overload for 'operator>>' in 'std::cin >> ((+(((unsigned int)n) * 116u)) + ((Orchestre*)(&tabO)))->Orchestre::quel_nom()'
du coup j'ai tentais autrement :
cout << "entrez votre nom";
cin >> tabO[n].Nom;
Mais toujours une erreur :
`char Orchestre::Nom[20]' is protected
Voila maintenant je sais plus comment faire avez vous une idée ? je sais ca doit être tout bête comme soluce mais franchement je trouve po !
Merci d'avance ++

piou ('<>')
dimanche 28 mai 2006 à 16:36:10 | Re : petit problème d'héritage...

laurent1024

Membre Club
Dans ta classe fille tu peut faire une fonction public setNom(string  n){ Nom = n;}
apres tu fait
string temp;
 cin >> temp;
tabO[n].setNom(temp);

++
dimanche 28 mai 2006 à 16:41:57 | Re : petit problème d'héritage...

vecchio56

Administrateur CodeS-SourceS
Visiblement c'est pas une classe fille, car normalement une classe fille à accès au données protégées de la classe mère (seules les données privées sont incaccessibles).
cin >> tabO[n].Quel_Nom();
Cela n'a pas de sens, car Quel_Nom() est, en gros, une constante.
dimanche 28 mai 2006 à 16:50:49 | Re : petit problème d'héritage...

laurent1024

Membre Club
cin >> tabO[n].Nom; ne peut pas marcher car, Nom est un membre protegé, donc de l'exterieur de la classe on n'a pas d'accès à ce membre d'ou le message Nom[20]' is protected
++
dimanche 28 mai 2006 à 16:54:47 | Re : petit problème d'héritage...

_deadstar_

oui vecchio56 Quel_Nom() est une constante mais je pense que c'est bien une classe fille que j'ai faite (d'apres le cours que j'ai vu sur le net) :
classe mere :
class Orchestre
{
      public :
             void initF(); //initialise le tableau par rapport a ce que contient le fichier.
             void affichertout(); //affiche tout les membres de l'Orchestre
             void afficher(); // pour afficher ce qu'il y a dans le tableau
             const int    quel_num()const ;
             const int    nbre_inter()const;
             const char * quel_nom()const;
             const char * quel_prenom()const;
             const char * quel_adresse()const;
             const char * quel_tel() const;
             int p; //position du dernier enregistrement
      protected :              
              int  Num;
              int  Nbre;
              int  Type; // 1-> Chef, 2-> Musicien, 3->Intermitants
              char Nom[20];
              char Prenom[15];
              char Adresse[50];
              char Tel[12];
}; 
 
Classe fille :

class Musicien : public Orchestre // classe fille de Orchestre
{
      public :
              void ajouter();
              void suppr();
              void modifier();
              void afficher();
             
      private :
              char libelle[20];
              int nbre_musc;
       
}
Merci Laurent1024 mais j'arrive pas non plus avec ta méthode.. je comprend pas pourquoi ca veut pas ! dans tout ce que j'ai lu il y a marqué que protected c'est pour la classe mere et pour les classes dérivées.. bizare..
Merci de m'avoir répondu va falloir que je creuse le ciboulot encore un tout petit peu
piou ('<>')
dimanche 28 mai 2006 à 16:55:20 | Re : petit problème d'héritage...

vecchio56

Administrateur CodeS-SourceS
Si le code en question est dans une classe fille (comme le précise le message initial), on peut très bien accéder au membre public (à condition de faire un héritage publique)
dimanche 28 mai 2006 à 17:01:35 | Re : petit problème d'héritage...

vecchio56

Administrateur CodeS-SourceS
Non j'ai déliré, même pas besoin d'un héritage publique (je connais pas trop, j'utilise tout le temps l'héritage publique).
Je ne vois pas la déclaration de tabO

Voila un exemple qui montre qu'on peut accéder à une membre protégé sans pb dans une classe fille:

class Mere
{
protected:
  int n;
};

class Fille: Mere
{
  void f() {n = 0;}
};

int main()
{
}
dimanche 28 mai 2006 à 17:01:59 | Re : petit problème d'héritage...

_deadstar_

oui oui le code est dans la classe fille et c'est pouquoi j'ai voulu utiliser :
const char * quel_nom()const
{
    return Nom;
};
comme membre public afin de pouvoir l'utiliser dans ma classe fille mais apparement ca suffit pas

piou ('<>')
dimanche 28 mai 2006 à 17:06:01 | Re : petit problème d'héritage...

vecchio56

Administrateur CodeS-SourceS
Mais justement tu n'en a pas besoin (et puis de toute facons on n'affecte pas une fonction, ca na pas de sens). Je t'explique que le `char Orchestre::Nom[20]' is protected n'est pas logique, donc tu n'est sans doute pas dans la classe fille. Si tu veux montrer ton code on pourra peut être avancer un peu
dimanche 28 mai 2006 à 17:15:31 | Re : petit problème d'héritage...

_deadstar_

class Orchestre
{
      public :
             void initF(); //initialise le tableau par rapport a ce que contient le fichier.
             void affichertout(); //affiche tout les membres de l'Orchestre
             void afficher(); // pour afficher ce qu'il y a dans le tableau
             const int    quel_num()const ;
             const int    nbre_inter()const;
             const char * quel_nom()const;
             const char * quel_prenom()const;
             const char * quel_adresse()const;
             const char * quel_tel() const;
             int p; //position du dernier enregistrement
      protected :              
              int  Num;
              int  Nbre;
              int  Type; // 1-> Chef, 2-> Musicien, 3->Intermitants
              string Nom;
              char Prenom[15];
              char Adresse[50];
              char Tel[12];
};     
      
Orchestre tabO[100]; //tableau d'objet de la classe mere Orchestre

class Musicien : public Orchestre // classe fille de Orchestre
{
      public :
              void ajouter();
              void suppr();
              void modifier();
              void afficher();
              /*void setNom(string no,int n)
              {
                   tabO[n].Nom = no;
              };*/
      private :
              char libelle[20];
              int nbre_musc;
};

void Musicien::ajouter()
{
     string temp;
     Orchestre O;
     int rep,n;
     rep = 1;
     n = p-1; //se positione dans le tableau sur le prochain enregistrement
     while (rep == 1)
      {
       clrscr();
       textcolor (10);
       cout << " _____________________________________________\n";
       cout << "|       1. Fiche de saisie d'un Musicien       |\n";
       cout << " ---------------------------------------------\n";
       cout << endl;
       n++;
       textcolor(11);
       cout << "Entrez le nom du Musicien (max 10 caractères) \n";
       textcolor(14);
       /*cin >> temp;
       setNom(temp);*/
       tabO[n].quel_nom();
       textcolor(11);
       cout << "Veuillez saisir son prenom (max 10 car): \n";
       textcolor(14);
       cin  >> tabO[n].quel_prenom() ;
       textcolor(11);
       cout << "son numeros de telephone : \n";
       textcolor(14);
       cin  >> tabO[n].quel_tel() ;
       textcolor(11);
       cout << "son adresse : \n";
       textcolor (14);
       cin  >> tabO[n].quel_adresse() ;
       textcolor(11);
       cout << "Veuillez indiquer l'instrument dont il joue \n";
       textcolor(14);
       cin >> tabM[n].quel_libelle() ; 
              
       textcolor (11);
       cout << "Voulez vous remplir une autre fiche de personnel (0/1) ?\n";
       textcolor (14);
       cin  >> rep ;
      }
     
       if (rep == 0)
      {
               ofstream personnel;
               personnel.open("Orchestre.txt", ios::out|ios::trunc);
               for (int i = 0; i <= Nbre ; i++)
               {
                if (personnel.bad())
                return 1;
                personnel << i+1 << endl << tabO[i].Nom << endl << tabO[i].Prenom << endl << tabO[i].Tel << endl
                                << tabO[i].Adresse << endl << tabM[i].libelle << endl;
               }
             personnel.close();
             textcolor (6);
             clrscr();
            
      }
};
Voila en clair ce que je veux faire saisir des informations les stockées dans un tableau pour ensuite toutes les enregistrer dans un fichier .txt.
encore désolée mais je débute en c++ du coup c'est pas facile pour moi..merci de m'aider

piou ('<>')

1 2

Cette discussion est classée dans : problème, classe, fille, protected, tabo


Répondre à ce message

Sujets en rapport avec ce message

problème de copier-coller pour les .h des dll ? [ par ilimo ] bonjour,j'ai trois projets : P1 : dll : contient la classe aP2 : dll : contient la classe bP3 : exe : contient la classe c qui se sert d Problème "général" avec Direct3D, HELP ! [ par ProGamer ] J'ai commencé une application Direct3D. Elle était constituée d'une classe principale qui contenait l'objet LPDIRECT3D8. Tout marchait bien. Ensuite, Héritage et constructeur de la classe fille [ par Cookiem ] Bonjour c'est une question vraiment toute bête mais ... j'arrive pas à trouver la solution.Lorsqu'une classe fille hérite d'une classe mère.Comment fa Erreur de segmentation... Qu'est ce que c'est ??? :o [ par Rouliann ] Salut tout le monde j'ai un gros problème et malgré tous mes essais je n'arrive pas à le résoudre... Il n'y a pas d'erreurs à la compilation mais lors Problème utilisation fonction [ par sidhannowe ] Bonjour, J'utilise la classe screenshot présentée ici: http://www.cppfrance.com/code.aspx?id=21255 mais lorsque je compile Dev c++ m'indique des erre Problème de class [ par norton ] Bonsoir, j'ai un problème avec ma class. quand je compile ca me donne ce message d'erreur : error C2653: 'CCamera' : is not a class or namespace name Problème avec une classe [ par Freeskieur ] Hello,Je connais assez bien les classes mais là j'ai une spécialité et je capte pas comment il faut faire pour que ca passe.Ca foire sur la ligne ou i pointeur de classe [ par gbcha ] bonjour,J'ai un problème avec microsoft visual C++. J'avais crée un certain nombre de classe, avec un certain nombre de pointeurs sur ces classes. J'a MSComm [ par Scopas ] Bonjour, j’ai un petit problème je cherche à ajouter un le contrôle ActiveX Microsoft communication control, version 6.0 (donc celui de MSComm) Sur Vi problème d'allocation de classe [ par dark_naruto25 ] Salut les amis Voilà un autre problème bizzard. J'ai une classe appelé Bitmap, qui comme son nom l'indique gère une image bmp. Bref, à côté de cette c


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales