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

MFC Discussion :

Problème programmation objet


Sujet :

MFC

  1. #41
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par r0d
    Je suis d'accord, mais pour l'instant, le mieux pour lui est de faire simple, donc d'appliquer des règles simples. Visiblement, il débute en C++, il ne faut donc pas cpmmencer à lui parler des subtilités de ce langage. Non?
    Oui, c'est vrai, mais comme pas mal de sources disponibles font comme cela, je voulais juste préciser que c'était quelquefois utile

  2. #42
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut Règles de mon programme
    Le but étant la gestion de livres dans une bibliothèque. L'utilisateur doit créer au moins une étagère puis au moins un genre. C'est alors qu'il peut créer des livres qu'il affecte dans des genres qui se trouvent eux mêmes dans des étagère.

    Une étagère peut contenir plusieurs genres.
    Un genre peut contenir plusieurs livres.
    Un genre ne peut se trouver que dans une seule étagère.
    Un livre n'a qu'un seul genre.

    Une fois la structure principale (postée ci dessus) fonctionnelle, je rajouterai des méthodes. Mais je ne peux pas contuinuer ce programme tant que cela ne marche pas. Voilà vous ètes au courant du but de ce programme. Pouvez-vous m'aider à faire marcher la structure svp?

  3. #43
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    erf, c'est vrai que c'est pas évident.

    Pour ma part, je ferais simple:
    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
    class CEtagere
    {
    CGenre *m_pGenrePresentsDansEtagere;
    CLivre *m_pLivresPresentsDansEtagere;
    }
     
    class CLivre
    {
    CGenre m_Genre;
    }
     
    class CGenre
    {
    ...
    }
    Et ensuite, c'est dans tes fonctions que l'on vérifie que les conditions sont respectées. Mais j'avoue que je ne suis pas sûr de moi sur ce coup là.


    [Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]

  4. #44
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353
    Par défaut
    Salut,
    Qu'est-ce que ça donnerait un code comme ça ?
    Evidemment il faudra mettre le corps des constructeurs / méthodes dans les .CPP mais ça aurait pas été lisible sinon ....

    Etagere.h
    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
     
    #include <vector>
     
    class Genre;
    class Livre;
     
    class Etagere
    {
         Etagere();
         vector<Genre*>  m_apGenres;
         vector<Livre*>    m_apLivres;
     
         void ajouterGenre(Genre& _g) 
         {
               m_apGenre.push_back( &_g );
         }
    };
    Genre.h
    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
     
    #include <vector>
    #include <string>
    class Etagere;
     
    class Genre
    {
        Genre(Etagere& _e, string _str)   m_Etagere(_e), m_strNom(_str)
        {
              m_Etagere.ajouterGenre( *this );
        }
     
        Etagere&            m_Etagere;
        string                 m_strNom;
        vector<Livre*>   m_apLivres;
     
        void ajouterLivre( Livre& _l)
        {
             m_apLivres.push_back( &_l );
        }
    };

    Livre.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <string>
    class Genre;
     
    class Livre
    {
         Livre(Genre& _g, string _str)  m_Genre(_g), m_strNom(_str)
         {
               m_Genre.ajouterLivre( *this );
         }
     
         Genre&   m_Genre;
         string      m_strNom;
    };

    A utiliser comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Etagere et1, et2;
     
    Genre policier(et1,"policier");
    Genre poesie(et1,"poesie");
    Genre sf(et2, "sf");
     
    Livre livre1(sf, "tibidou");
    Livre livre2(policier,"tada");
    Ca t'irai ?
    Ca assure un genre par livre (donné à la construction), et une étagère par genre (donnée aussi à la construction), et voilà

  5. #45
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut re problème
    Bon vu que mon programme doit être présenté au bts et que vos solutions sont assez compliquées... j'ai modifié mon code :

    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
    // Classe Etagere //
     
     
    class etagere 
    {
     
    private :
     
    	int numetagere;
     
     
    public :
     
    	int tabgenre[100];
    	etagere (int numero_etagere) {numetagere = numero_etagere;}
    	int retourne_etagere(void) {return numetagere;}
     
    };
    // Classe Genre //

    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
    class genre
    {
     
    private:
     
    	char* libgenre;
     
    public:
     
    	char* tablivre[100];
    	int tabetagere[100];
    	genre (char* libelle_genre) {libgenre = libelle_genre;}
    	char* retourne_genre(void) {return libgenre;}
     
    };

    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
    // Classe Livre //
     
    class livre
    {
     
    private :
     
    	char* titlivre;
     
    public :
     
    	int son_etagere;
    	char* son_genre;
    	livre (char* titre_livre) {titlivre = titre_livre;}
    	char* retourne_livre(void) {return titlivre;}
     
    };
    programme principal :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    #include "Etagere.h"
    #include "Genre.h"
    #include "Livre.h"
     
    void main()
    {
    	int numetagere_s = 0;
    	char* libgenre_s = "";
    	char* titlivre = "";
    	int action = 0;
     
    	cout<< "Que voulez-vous faire ?";
    	cout<<"\n\n";
    	cout<<"\t";
    	cout<<"1 : Creer une nouvelle etagere.";
    	cout<<"\n";
    	cout<<"\t";
    	cout<<"2 : Creer un nouveau genre.";
    	cout<<"\n";
    	cout<<"\t";
    	cout<<"3 : Creer un nouveau livre.";
    	cout<<"\n\n";
    	cin >> action;
    	switch (action)
    	{
    		case 1:
     
    		cout<< "Veuillez entrez le numero de l'etagere à creer SVP.";
    		cout<< "\n\n";
    		cin >> numetagere_s;
    		etagere (numetagere_s);
    		cout<< "Vous avez cree l'etagere numero :";
    		cout<<"\n";
    		numetagere_s = etagere.retourne_etagerere();
    		cout<< "\n";
    		numetagere_s = 0;
    		break;
     
    		case 2:
     
    		cout<< "Veuillez entrez le libelle du nouveau genre SVP.";
    		cout<< "\n\n";
    		cin >> libgenre_s;
    		genre (libgenre_s);
    		cout<< "Vous avez cree le genre :";
    		cout<< "\n";
    		libgenre_s = genre.retourne_genre();
    		cout<< "\n";
    		libgenre_s = "";
    		break;
     
    		case 3:
     
    		cout<< "Veuillez entrer le titre du nouveau livre";
    		cout<< "\n\n";
    		cin >> titlivre;
    		livre (titlivre);
    		cout<< "Vous avez cree le livre :";
    		cout<< "\n";
    		titlivre = livre.retourne_livre();
    		cout<< "\n";
    		titlivre = "";
    		break;
    	}
    }

    Avec ça j'ai les erreurs suivantes :

    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
    Compiling...
    Prog_util.cpp
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(34) : error C2512: 'etagere' : no appropriate default constructor available
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(37) : error C2039: 'retourne_etagerere' : is not a member of 'etagere'
            c:\documents and settings\christophe\bureau\cours\ap2 - gestion des livres\gestion_biblio\bibliothèque\etagere.h(10) : see declaration of 'etagere'
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(42) : error C2360: initialization of 'numetagere_s' is skipped by 'case' label
            C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(34) : see declaration of 'numetagere_s'
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(47) : error C2512: 'genre' : no appropriate default constructor available
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(50) : error C2275: 'genre' : illegal use of this type as an expression
            c:\documents and settings\christophe\bureau\cours\ap2 - gestion des livres\gestion_biblio\bibliothèque\genre.h(9) : see declaration of 'genre'
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(55) : error C2360: initialization of 'libgenre_s' is skipped by 'case' label
            C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(47) : see declaration of 'libgenre_s'
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(55) : error C2360: initialization of 'numetagere_s' is skipped by 'case' label
            C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(34) : see declaration of 'numetagere_s'
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(60) : error C2512: 'livre' : no appropriate default constructor available
    C:\Documents and Settings\Christophe\Bureau\Cours\AP2 - Gestion des livres\Gestion_biblio\Bibliothèque\Prog_util.cpp(63) : error C2275: 'livre' : illegal use of this type as an expression
            c:\documents and settings\christophe\bureau\cours\ap2 - gestion des livres\gestion_biblio\bibliothèque\livre.h(9) : see declaration of 'livre'

    Pouvez-vous juste m'aider à enlever ces erreurs? merci beaucoup par avance

  6. #46
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    1ere erreur: error C2512: 'etagere' : no appropriate default constructor available : Il te faut un constructeur pour ta classe etagere:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class etagere
    {
    public:
      etagere();
     
    private:
     ...
    };
    2eme erreur: error C2039: 'retourne_etagerere' : is not a member of 'etagere' ce ne serait pas plutot retourne_etagere ?


    3eme erreur:error C2360: initialization of 'numetagere_s' is skipped by 'case' label tu n'a pas le droit de délarer des variables dans un case!


    4eme erreur:error C2512: 'genre' : no appropriate default constructor available il te faut un constructeur pour la classe genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class genre
    {
    public:
      genre();
     
    private:
     ...
    };
    etc...

    Je me permet de te donners quelques conseils, car je suis passé par là moi aussi:
    - Lis tes messages d'erreurs et comprends-les, tu trouveras toi-même tes erreurs->c'est plus rapide (que d'attendre une réponse sur un forum) et ça fais progresser plus vite.
    - Fais attention au nommage de tes classes/fonctions/variables, ça t'éviteras beaucoup d'erreurs et ça te fera gagner du temps. Je t'explique rapidement les conventions pour le c++:
    - une classe commence par un C majuscule et la premiere lettre est en majuscule. Ex class genre -> class CGenre.
    - une variable commence par un lettre indiquant son type (int->i, string->str), avec des Majuscules pour délimiter les mots, etc. Ex: int numetagere-> int iNumEtagere.
    - une variable membre (c'est à dire qu'elle est déclarée dans une classe) commence par m_. Ex: int iNumEtage -> int m_iNumEtagere. string libgenre->string m_strLibGenre;

    - n'utilise pas de char*, mais des string!!!!

    - jamais de code dans les .h:
    le .h:
    // Classe Etagere //
    class CEtagere
    {
    CEtagere(); //le constructeur que tu as oublié
    private :
    int numetagere;

    public :

    int m_aiTabGenre[100]; //m_ car c'est une variable membre, a pour array(tableau), i pour int
    void etagere (int numero_etagere); //si ta fonction ne retourne rien, il faut le void au début
    int retourne_etagere(void) ;
    };
    et le .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CEtagere::CEtagere(){} //le constructeur que tu as oublié, même s'il est vide, il faut le mettre
     
    void CEtagere::etagere(int numero_etagere)
    {
       numetagere = numero_etagere;
    } //tu avais mis cette fonction dans le .h, il faut la mettre dans le .cpp
    déjà, si tu fais ça, ça compilera bientôt

    Un dernier truc, juste pour la lisibité (mais c'est pas trop important): habituellement, on utilise des fonction Get et SEt pour accéder/modifer les variables membres. Get() c'est pour récupérer la variable, Set() c'est pour la modifier: ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    class CUneClasse
    {
    public:
       CUneClasse();  //le constructeur
     
       int getMaVariable();
       void setMaVariable(int iMaValeur);
     
    private:
       int m_iMaValeur;
    };
    et le .cpp:
    CUneClasse::CUneClasse(){} //le constructeur, vide

    int CUneClasse::getMaVariable()
    {
    return m_iMaVariable;
    }

    void CUneClasse::setMaVariable(int iMaVariable)
    {
    m_iMaVariable = iMaVariable;
    }
    hope it helps

  7. #47
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Pourquoi mes string ne fonctionnent pas alors que j'ai défini #include<string.h> ???

  8. #48
    Membre averti
    Avatar de rolkA
    Inscrit en
    Juillet 2003
    Messages
    324
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 324
    Points : 369
    Points
    369
    Par défaut
    Citation Envoyé par Contrec
    Pourquoi mes string ne fonctionnent pas alors que j'ai défini #include<string.h> ???

  9. #49
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    J'ai réussi à faire fonctionner tout ça, maintenant j'ai qualques problèmes au niveau des chaînes de caractère (dsl pour mes char*) ainsi que pour déclarer dans mon .cpp des tableaux d'objets (1 pour etagere, 1 pour livre, 1 pour genre). Peut-on m'aider svp?

  10. #50
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 266
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 266
    Points : 6 688
    Points
    6 688
    Billets dans le blog
    2
    Par défaut
    et bien, quels sont tes problèmes? (précise)

  11. #51
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353
    Par défaut
    Lu'

    De même que le passage char* -> string, je te conseille de faire le grand saut montype[] -> vector<monType>

    Regarde dans la page 3, je t'avais mis un exemple d'utilisation. En gros (pour simplifier), c'est un tableau qui se redimentionne automatiquement. Tu le déclares comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    #include <vector>
     
    std::vector<int>    m_aiMonTableauDEntiers;
    (tu noteras le même genre de notation que r0d : m_ai = tableau d'entier membre de ta classe)

    et tu l'utilise comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    m_aiMonTableauDEntiers.push_back(8);
    m_aiMonTableauDEntiers.push_back(1);
    m_aiMonTableauDEntiers.push_back(12);
     
    cout << m_aiMonTableauDEntiers[0] << endl;  // affichera 8
    cout << m_aiMonTableauDEntiers.size() << endl;  // affichera 3
    Voilà voilà, c'est généralement plus sur et plus lisible d'utiliser les types de la libriaire standard C++ (string, vector, list, ...) plutôt que les équivalents C.

    Regarde ce site la, c'est pas mal fait en cas de trou de mémoire

    http://www.sgi.com/tech/stl/

    ~bigquick~

  12. #52
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Mais le peit problème c'est que mon programme est tout simple et destiné à être présenté pour mon BTS donc je ne veut pas faire plus compliqué. Je n'ai que trois classes donc ça ira avec ces noms de variables. Maintenant ce que je voudrai faire, c'est que quand je crée un objet etagere par exemple, je voudrai le placer dans un tableau d'objets de type etagere pour pouvoir avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    etagere(num_etagere)[i].retourne_nom();
    sans même avoir à donner un nom spécifique à chaque objets de ma classe comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    etagere etagere_a(num_etagere);
    etagere etagere_b(num_etagere) etc...;
    Lorsque je déclare un tableau etagere tab_etagere[100]; le compilateur dit que mon constructeur n'est pas bon. Il doit manquer mon paramètre num_etagere, du coup jhe ne sait pas comment faire.

    je voudrai etagere(num_etagere)[i] avec i indice du tableau de type etagere.

    La meme chose pour genre et livre.

    On m'a dit que créer une classe 'collection' ayant ces trois tableaux et des méthodes pour retourner les indices, et variables membres seraient pas mal.

  13. #53
    Membre averti
    Avatar de bigquick
    Profil pro
    Inscrit en
    Août 2002
    Messages
    356
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 356
    Points : 353
    Points
    353
    Par défaut
    Si je comprends ce qui se passe, tu déclares (en gros):
    mais ton constructeutr d'étagère a besoin d'un indice ... donc le compilateur ne sait pas quel indice donner à tes éléments du tableau....

    La solution, c'est l'allocation dynamique
    Tu déclares un tableau de pointeurs sur Etageres, et tu créés toutes les étageres:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Etagere* tab[100];
    for (int i=0; i<100; ++i)
       tab[i] = new Etagere(i);
    Et voilà, ça va te créér 100 étagères, avec des indices de 0 à 99.

    Après tu peux te servir de ton tableau avec l'operateur -> plutôt que . (puique ce sont des pointeurs et non tes objets directement), donc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab[23]->retourne_nom();
    Enfin, à la fin de ton programme, n'oublie pas de supprimer tes étageres (comme tu les a créées à la main, il faut les supprimer à la main):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for (int i=0; i<100; ++i)
        delete tab[i];

  14. #54
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    J'ai fait comme tu m'a dis, il n'y a aucune erreur à la compilation, seulement lorsque j'exécute pour tester, j'ai une erreur système lorsuqe j'entre le numéro de l'étagère... Exactement comme lorsque je veux entrer un libellé de genre ou un titre de livre.. je ne vois vraiment pas pourquoi ces erreurs apparaissent...

  15. #55
    Membre averti Avatar de Contrec
    Homme Profil pro
    Inscrit en
    Mars 2005
    Messages
    597
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39

    Informations forums :
    Inscription : Mars 2005
    Messages : 597
    Points : 342
    Points
    342
    Par défaut
    Voilà je peux créer des étageres mais lorsqu'il s'agit de retourner une chaine de caractère, une erreur windows apparait.
    Je met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    char* retourne_genre(void) {return libgenre;}
    ne faudrait-il pas que j'utilise strcpy pour renvoyer ma chaîne de caractère? car je ne sais pas m'en servir.
    Merci d'avance

+ Répondre à la discussion
Cette discussion est résolue.
Page 3 sur 3 PremièrePremière 123

Discussions similaires

  1. problème programmation orientée objet
    Par hyuga33 dans le forum Général Python
    Réponses: 16
    Dernier message: 14/05/2010, 18h57
  2. probléme programmation Objet
    Par le5ejumeau dans le forum Général Dotnet
    Réponses: 3
    Dernier message: 19/05/2008, 11h13
  3. Problème (programmation objet)
    Par Kypper_667 dans le forum C++
    Réponses: 3
    Dernier message: 01/07/2006, 16h50
  4. [ASP] Programmation objet ?
    Par Hell dans le forum ASP
    Réponses: 6
    Dernier message: 07/04/2005, 15h28
  5. Problème d'objet attendu
    Par odelayen dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 22/02/2005, 10h27

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