IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

typedef et classe


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 149
    Par défaut typedef et classe
    J'espère que cela ne dérange pas trop si je pose plusieurs questions à la suite sur le forum. Mais vu comme je débute en c j'ai quelques difficultés.

    j'ai deux classes, MLogin et MMenu. Dans ses deux classes j'ai des attributs privées et publiques ainsi que des méthodes. Cependant, dans MLogin j'ai créé un typedef STableau avec différents attributs, et j'aimerai récupérer ses valeurs (de mon typedef) dans MMenu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    #undef  ROUT
    #define ROUT "MLogin::CheckUser"
    typedef struct{ 
                      char Ligne[20],Login[20],Site1[4],Site2[4],Site3[4],Site4[4],
                           Auto1[3],Auto2[3],Auto3[3],Auto4[3],Auto5[3];
     
                  }STableau;
     
     
    BOOL MLogin::CheckUser()
    {
      //Attributs
      FILE    *fp;
      CHAR    szLine[L_PRM_LINE+1], szPath[_MAX_PATH+1];
      PSZ     pszOpeCod = NULL;
      BOOL    fAuth = FALSE;
      int		  longueur;
      STableau montableau[20];
    j'essaie d'obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MLogin::getSTableau()
    {
      return montableau[0].Login;
    }
    pouvez vous m'aider svp ?

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Bonjour,

    avec ce typedef, tu déclares une structure (d'ailleurs le typedef est inutile en C++, la syntaxe est struct MaStruct {...};).
    Ensuite dans ta classe, tu crées un tableau de 20 struct.
    A quel niveau tu bloques pour retourner le champ login de la structure index 0 de ton tableau ?

    j'essaie d'obtenir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    MLogin::getSTableau()
    {
      return montableau[0].Login;
    }
    Qu'est-ce qui t'en empêche ? A part que tu ne spécifies pas de type de retour et donc ça plante, mais as-tu au moins essayé de compiler ? De lire les messages d'erreur ? Quels sont-ils ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* Classe::GetLogin() { return monTableau[0].Login; }
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  3. #3
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 149
    Par défaut
    si si j'ai deja essayer pas mal de chose avant...

    j'ai déclaré ma méthode dans ma classe Mlogin
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* MLogin::GetLogin()
    puis dans mon cpp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    #undef  ROUT
    #define ROUT "MLogin::CheckUser"
    typedef struct{ 
                      char Ligne[20],Login[20],Site1[4],Site2[4],Site3[4],Site4[4],
                           Auto1[3],Auto2[3],Auto3[3],Auto4[3],Auto5[3];
     
                  }STableau;
    char* MLogin::GetLogin() 
    { 
      return monTableau[0].Login; 
    }
     
    BOOL MLogin::CheckUser()
    {
      FILE    *fp;
      CHAR    szLine[L_PRM_LINE+1], szPath[_MAX_PATH+1];
      PSZ     pszOpeCod = NULL;
      BOOL    fAuth = FALSE;
      int		  longueur;
      STableau montableau[20];
    message d'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    error C2065: 'monTableau' : undeclared identifier
    error C2109: subscript requires array or pointer type
    error C2228: left of '.Login' must have class/struct/union type
    ce n'est pas un problème d'héritage (public,prive de ma structure Stableau) ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2012
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2012
    Messages : 21
    Par défaut
    salut,

    tu déclares ton tableau comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    STableau montableau[20];
    puis tu l'utilises comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return monTableau[0].Login;
    c'est pas le même nom ça , exactement ce que te disais ton message d'erreur :

    error C2065: 'monTableau' : undeclared identifier
    ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    return montableau[0].Login;

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Network game programmer
    Inscrit en
    Juin 2010
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Network game programmer

    Informations forums :
    Inscription : Juin 2010
    Messages : 7 152
    Billets dans le blog
    4
    Par défaut
    Je suis pas sûr qu'il s'agisse de copier/coller raté donc:
    - tu ne préfixes pas par MLogin:: un prototype dans le header contenu dans la classe
    - tu ne répètes pas ton typedef dans le .cpp
    Pensez à consulter la FAQ ou les cours et tutoriels de la section C++.
    Un peu de programmation réseau ?
    Aucune aide via MP ne sera dispensée. Merci d'utiliser les forums prévus à cet effet.

  6. #6
    Membre confirmé
    Inscrit en
    Février 2011
    Messages
    149
    Détails du profil
    Informations forums :
    Inscription : Février 2011
    Messages : 149
    Par défaut
    pardon je me suis trompé en écrivant monTableau[0] dans mon message précédant, mais dans mon code j'ai bien mis montableau... mais j'ai tjrs les memes messages d'erreurs.
    Par contre je suis obligé de mettre typedef struct sinon il n'en veut pas de mon tableau...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Traits pour classes définissant un typedef
    Par Florian Goo dans le forum Langage
    Réponses: 11
    Dernier message: 03/06/2009, 18h09
  2. Pb <<typedef>> class parametrée
    Par bighty dans le forum BOUML
    Réponses: 2
    Dernier message: 15/07/2008, 10h05
  3. Typedefs dans une classe template
    Par olivier1978 dans le forum Langage
    Réponses: 1
    Dernier message: 29/10/2007, 01h12
  4. typedef dans une class template
    Par yan dans le forum Langage
    Réponses: 2
    Dernier message: 01/10/2007, 10h43
  5. Sortir un typedef d'une classe
    Par Theophil dans le forum C++Builder
    Réponses: 13
    Dernier message: 03/07/2002, 17h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo