Partage
  • Partager sur Facebook
  • Partager sur Twitter

Petit problème quand je met un friend

Sujet résolu
    5 avril 2008 à 16:52:22

    Bonjour tout le monde,

    J'ai une classe CVoiture qui a comme Ami "CTabVoiutes".

    Le problème est que quand je le déclare comme ami, il me met ces messages d'erreurs :

    Citation : Mon compilateur à la ...

    z:\graduat\c++\cours 07-08\19 03 08\vehicule3 partie 1\vehicule3\vehicule3.h(31) : error C2433: 'CTabVoitures' : 'friend' not permitted on data declarations
    z:\graduat\c++\cours 07-08\19 03 08\vehicule3 partie 1\vehicule3\vehicule3.h(31) : error C2501: 'CTabVoitures' : missing storage-class or type specifiers
    z:\graduat\c++\cours 07-08\19 03 08\vehicule3 partie 1\vehicule3\vehicule3.h(31) : error C2244: 'CTabVoitures' : unable to resolve function overload
    Vehicule3.cpp
    z:\graduat\c++\cours 07-08\19 03 08\vehicule3 partie 1\vehicule3\vehicule3.h(31) : error C2433: 'CTabVoitures' : 'friend' not permitted on data declarations
    z:\graduat\c++\cours 07-08\19 03 08\vehicule3 partie 1\vehicule3\vehicule3.h(31) : error C2501: 'CTabVoitures' : missing storage-class or type specifiers
    z:\graduat\c++\cours 07-08\19 03 08\vehicule3 partie 1\vehicule3\vehicule3.h(31) : error C2244: 'CTabVoitures' : unable to resolve function overload

    Voici mon code, sauriez-vous me dire ce qu'il se passe svp ?

    Merci d'avance
    beegees

    1. #include <BasicConsole.h>
    2. #include "chaine.h"
    3. class Vehicule3
    4. {
    5. public:
    6.         Vehicule3();
    7.         Vehicule3(const Vehicule3& Modele);
    8.         Vehicule3(const char* UneImmatriculation, short UnNombreDePlace);
    9.         ~Vehicule3();
    10.         const char*                     Immatriculation() const; // accesseur du nom
    11.         bool                            EstValide() const;
    12.         bool            Immatriculation(const char* UneImmatriculation);
    13.         bool            NombreDePersonnes() const;
    14. private:
    15.         CChaine         m_Immatriculation;
    16.         short           m_NombreDePersonnes;
    17. };
    18. class CVoiture : public Vehicule3
    19. {
    20. friend CTabVoitures;
    21. public:
    22.         CVoiture();
    23.         CVoiture(const CVoiture& Modele);
    24.         CVoiture(const char* UneImmatriculation,short UnNombreDePlace,double UnVolumeTransportableDeMarchandise);
    25.         ~CVoiture();
    26.         double          VTM();
    27.         bool            VTM(double UneValeurTransportableDeMarchandise);
    28.         bool            EstValide() const;
    29.         private:
    30.         static int                      FctnComparerN(const void* p1, const void* p2);
    31.         static int                      FctnComparerSN(const void* p1, const void* p2);
    32.         int                                     ComparerN(const CVoiture& Autre) const;
    33.         int                                     ComparerSN(const CVoiture& Autre) const;
    34. private:
    35.         double          m_VTM; //Volume transportable de marchandise
    36. };
    37. class CTabVoitures
    38. {
    39. public:
    40.         CTabVoitures();
    41.         ~CTabVoitures();
    42.         bool            Ajouter(const CVoiture& Modele);
    43.         CVoiture&                       Element(long Indice) const;
    44.         long                            Indice(const char* Nom) const;
    45. private:
    46.         long            m_Nombre;
    47.         CVoiture**      m_Tableau;
    48. };
    49. class CLeTout
    50. {
    51. public:
    52.         CLeTout();
    53.         ~CLeTout();
    54.         bool            Charger(const char* NomFichier);
    55.         void            Afficher() const;
    56.         CChaine         Immatriculation() const;
    57. private:
    58.         private:
    59.         static bool                     FctnTraiterLigne(const CChargeurFichierTexte& CC, void* Contexte);
    60.         bool                            TraiterLigne(const CChargeurFichierTexte& CC);
    61. private:
    62.         CTabVoitures    m_TV; //Tableau de voitures
    63. };
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      5 avril 2008 à 17:02:34

      friend class CTabVoitures; en mettant soit avant la déclaration de CTabVoitures soit class CTabVoitures;
      • Partager sur Facebook
      • Partager sur Twitter
        5 avril 2008 à 17:19:53

        Citation : Davidbrcz

        friend class CTabVoitures; en mettant soit avant la déclaration de CTabVoitures soit class CTabVoitures;



        Merci pour ta réponse qui a réglé mon problème.

        Déclarer les classes tout en haut du .h fonctionne aussi, on ne doit alors pas mettre friend class CTabVoitures;

        Merci encore.

        beegees
        • Partager sur Facebook
        • Partager sur Twitter

        Petit problème quand je met un friend

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown