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 :

séparation de fichier pour une class - Pb de débutant


Sujet :

C++

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut séparation de fichier pour une class - Pb de débutant
    Bonjour à tous, j'apprend en ce moment le C++ grâce au livre de claude delannoy ainsi que son livre avec des TPs dedant.
    Cependant je n'arrive pas à compiler une source qui pour moi ne possède pas d'érreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    /*main.cpp*/
    #include <iostream>
    #include "vecteur3d.h"
     
    int main(void)
    {
    	Vecteur3d *vec1=new Vecteur3d();
    	Vecteur3d *vec2=new Vecteur3d(2,5.3);
    	Vecteur3d *vec3=new Vecteur3d(2.5,2,3);
     
    	cout << "\nNombre d'objets cree:" << Vecteur3d::affNbObjets();
    	return 0;
    }
    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
     
    /*vecteur3d.h*/
    #ifndef VECTEUR3D_H
    #define VECTEUR3D_H
    /************************************************/
    /*CLASS VECTEUR3D.H  02/11/05        */
    /************************************************/
    //Declaration de classe
    class Vecteur3d
    {
    private:
    	float x,y,z;
    	static int nb_objets;
    public:
    	//Constructeur avec argument par défault et surdéfinition
    	Vecteur3d(float=0,float=0,float=0);
    	Vecteur3d(Vecteur3d &);//passage par reference
     
    	//Methodes
    	static int affNbObjets(void);
    	int equals (Vecteur3d);//Passage par copie mais il est préférable d'utiliser par reference
    };
    int Vecteur3d::nb_objets=0;//Initialisation du membre static
    #endif
    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
     
    /*vecteur3d.cpp*/
    #include "vecteur3d.h"
    /**************************************************/
    //Definition de classe (methodes...)
    Vecteur3d::Vecteur3d(float a, float b, float c)
    {
    	x=a;
    	y=b;
    	z=c;
    }
     
    Vecteur3d::Vecteur3d(Vecteur3d &vec)
    {
    	x=vec.x;
    	y=vec.y;
    	z=vec.z;
    }
     
    int Vecteur3d::affNbObjets(void)
    {
    	return nb_objets;
    }
    voici mon pb lors de la compilation (j'utilise microsoft visual studio):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    g:\Tp\Tp_c++\Maison\Tp5\vecteur3d\vecteur3d\vecteur3d\main.cpp(10): error C2065: 'cout' : identificateur non déclaré
    g:\Tp\Tp_c++\Maison\Tp5\vecteur3d\vecteur3d\vecteur3d\main.cpp(7): warning C4305: 'argument' : troncation de 'double' à 'float'
    j'ai l'impression qu'il ne prend pas en compte les définitions de methodes dans vecteur3d.cpp
    que faire ?

  2. #2
    Expert éminent sénior
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Points : 13 380
    Points
    13 380
    Par défaut


    As-tu mis
    Introduction à Silverlight 4 (new) ; Localisation d'une application Silverlight (new) ;
    Mon espace perso[/B]

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. Albert Einstein[/SIZE]

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    si je le rajoute dans main.cpp sa me donne sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    g:\Tp\Tp_c++\Maison\Tp5\vecteur3d\vecteur3d\vecteur3d\main.cpp(7): warning C4305: 'argument' : troncation de 'double' à 'float'
    vecteur3d error LNK2005: "private: static int Vecteur3d::nb_objets" (?nb_objets@Vecteur3d@@0HA) déjà défini(e) dans main.obj
    vecteur3d fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Tu devrais vraiment faire un tour par la FAQ C++.

    http://c.developpez.com/faq/cpp/?pag...sing_namespace
    http://c.developpez.com/faq/cpp/?pag...SS_init_static

    Tu devrais aussi modifier ton titre pour le rendre un peu plus explicite.

    Citation Envoyé par Les règles du forum
    Prenez le temps qu'il faut pour bien choisir le titre de votre question.

    Les titres de questions sans aucuns sens du genre "Au secours" , "Help !!!", "aidez moi", "une question" , "Petit problème", etc. font perdrent un temps considérable aux lecteurs, qui doivent cliquer sur les messages dont le titre n'évoque rien. C'est pire encore quand vous faites une recherche sur les anciens messages.

    Les messages aux titres inadéquats pourront être soit édités, soit supprimés, soit boycottés, suivant l'humeur des lecteurs et des modérateurs.

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    dsl si je vous demande conseil c'est bien aprceque sa fait longtemp que je m'enerve sur ce problème. j'avait déjà tenter de resoudre mon pb à l'ai de la fac ..

  6. #6
    Membre confirmé Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Points : 488
    Points
    488
    Par défaut
    Pourtant la réponse est dans la faq :

    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
     
    // dans le fichier Exemple.h
    #ifndef EXEMPLE_H
    #define EXEMPLE_H
     
    class Exemple
    { 
    public: 
        static int compteur; 
    }; 
     
    #endif 
     
    // dans le fichier Exemple.cpp
    #include "Exemple.h" 
     
    int Exemple::compteur = 0;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int Vecteur3d::nb_objets=0; // A mettre donc dans vecteur3d.cpp
    L'itération est humaine; la récursion, divine.

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    l'erreur n'est pas là surtout que dans les deux cas on peux le faire
    c'est pas une erreur de code mais apaprament de compilateur, il pige pas qu'il faut qu'il prenne en compte la définition de la class.
    Quand je prend avec visual un projet préconstruit et que j'insére mon code tout fonctionne sauf que c'est du bricolage de faire sa

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Citation Envoyé par jules31
    l'erreur n'est pas là surtout que dans les deux cas on peux le faire
    c'est pas une erreur de code mais apaprament de compilateur
    Je me demande parfois à quoi ça sert de faire des FAQs et donner des solutions aux gens, si c'est pour voir ce genre de réponse...

    Je t'ai donné deux liens précédemment :

    - Le premier pour 'cout' : identificateur non déclaré
    - Le second pour static int Vecteur3d::nb_objets" déjà défini(e)

    Qu'est-ce qui ne te va pas avec ça ?

  9. #9
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2005
    Messages : 6
    Points : 2
    Points
    2
    Par défaut
    dsl ..
    je vous remerci

Discussions similaires

  1. Définition de méthodes pour une classe template
    Par Pragmateek dans le forum Langage
    Réponses: 13
    Dernier message: 20/12/2008, 00h46
  2. Ouverture de fichier pour une classe
    Par psikharpax dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 02/05/2007, 23h48
  3. Héritage d'un événement pour une classe fille
    Par korntex5 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 16h48
  4. [D2005][CGI] Nom de fichier pour une image
    Par Argonaute dans le forum Web & réseau
    Réponses: 1
    Dernier message: 30/08/2005, 12h56
  5. ecrire un iterateur pour une classe
    Par Blowih dans le forum C++
    Réponses: 2
    Dernier message: 15/11/2004, 19h19

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