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 :

[POO] problèmes de compilation


Sujet :

C++

  1. #1
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut [POO] problèmes de compilation
    Ca y est! J'ai terminé ma partie conception !
    Merci Miles, Luc, Eusebe, Swoög ... pour vos remarques et encouragements

    Arrive la partie erreur de compilation!!!
    C'est pas la plus facile...

    J'ai pour l'instant environ 300 erreurs, et je n'en comprend aucunes, elles n'ont pas lieu d'être pour la plupart. M'étonnerai pas qu'il y ait là dedans une petite erreur qui fasse naître tout le reste, comme d'hab.

    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
    #ifndef WARPING_H
    #define WARPING_H
     
    #include "CImg.h"
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
     
    #include "PDC.h"
     
     
    class Warping
    {
    public:
    	Warping(int n_choc, std::string nom_cfp, cimg_library::CImg <unsigned short>, cimg_library::CImg <unsigned short>);
    	Warping(std::string nom_fichier, cimg_library::CImg <unsigned short>, cimg_library::CImg <unsigned short>);
    	~Warping();
     
        <div style="margin-left:40px">void lancerWarping();</div><div style="margin-left:40px">cimg_library::CImg<float> Moyenne(const cimg_library::CImg<unsigned short>& src, int valeur);</div>	cimg_library::CImg<unsigned short> const getImageWarped();
    	void setNombrePointsInterpol(int);
     
    	void ajusterVisibleEtIR();
     
    	void ajouterPDCDepart(int a, int b);
    	void ajouterPDCArrivee(int a, int b);
    	void supprimerPDCDepart(int x, int y);
    	void supprimerPDCArrivee(int x, int y);
     
    	void affichageDepart();
    	void affichageArrivee();
     
     
    private:
    	PDC pdc;
     
    	float coeff_mul;
     
    	cimg_library::CImg <unsigned short> image_visible;
    	cimg_library::CImg <unsigned short> image_IR;
    	cimg_library::CImg <unsigned short> champ_deformation;
    	cimg_library::CImg <unsigned short> image_IR_warped; 
     
    	int nbpoints_interpol; // nombre de points pour l'interpolation
    	std::vector< std::pair <int, int> > pointschoisis; //points gardés pour l'interpolation
     
    	void nProchePoints(const std::pair <int, int>& H, int n);
    	std::pair<float, float> pointsInterpolation(std::pair <int, int>& H);
    	bool Test(const std::pair <int, int>& point);
    	cimg_library::CImg<> interpolationLin();
     
    	CImgDisplay depart_disp;
    	CImgDisplay arrivee_disp;
    }
    #endif
    Je pense qu'on va en rester là pour l'instant: voici ce que m'indique le compilo:
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\warping.h(16) : error C2447: '{': en-tête de fonction manquant (liste formelle à l'ancien format?)
    warping.cpp(4) : error C2653: 'Warping': n'est pas un nom de classe ni d'espace de noms
    warping.cpp(6) : error C2550: 'Warping': les listes d'initialiseurs de constructeur ne sont autorisées que dans la définition d'un constructeur
    warping.cpp(7) : error C3861: 'ajusterVisibleEtIR': identificateur introuvable, même avec une recherche qui dépend de l'argument
    warping.cpp(10) : error C3861: 'champ_deformation': identificateur introuvable, même avec une recherche qui dépend de l'argument
    warping.cpp(12) : error C3861: 'depart_disp': identificateur introuvable, même avec une recherche qui dépend de l'argument
    warping.cpp(13) : error C3861: 'arrivee_disp': identificateur introuvable, même avec une recherche qui dépend de l'argument
    warping.cpp(15) : error C2228: la partie gauche de '.title' doit avoir un type class/struct/union
    le type est ''unknown-type''
    warping.cpp(15) : error C3861: 'depart_disp': identificateur introuvable, même avec une recherche qui dépend de l'argument
    warping.cpp(16) : error C2228: la partie gauche de '.title' doit avoir un type class/struct/union
    Merci de votre aide!

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Si ton copier coller est exact, il manque un ; à la fin de la déclaration de ta classe, ce qui donne des erreurs étranges à la compilation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Warping
    {
        // ...
    };
    C'est dû au fait que le compilateur pense que tu vas déclarer une variable juste après, genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    class Warping
    {
        // ...
    } toto;
    Et lorsque tu inclus ton .h, ça ne ressemble pas du tout à ça et ça plante.

  3. #3
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Il manque déjà le ";" à la fin de la déclaration de ta classe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    class Warping
    {
    ...
    };
    Edit : Encore grilled...

  4. #4
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut

    OOOOUPS...
    Merci les gars! J'avais pas vu!

    Voici un autre problème
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Choc::ajouterAntenne(std::string nom_antenne)
    {
    	Antenne *antenne = new Antenne(*this, nom_antenne);
    	tableau_cfp.push_back(antenne);
    }
    Le compilo crie, car il ne connait pas Antenne.

    je m'explique:voici choc.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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #ifndef CHOC_H
    #define CHOC_H
    
    #include "CImg.h"
    #include <iostream>
    #include <string>
    #include <vector>
    
    
    class CFP;
    
    class Choc {
    
    public:
    	Choc (int num_choc);
    	~Choc();
    
    	void ajouterComposant(CFP*);
    	void ajouterLPT(std::string);
    	void ajouterAntenne(std::string);
    	void supprimerComposant(std::string);
    	std::vector <CFP*> getTableauCFP();
    	int getNumeroChoc() const ;
    
    	void setNumeroChoc (int);
    
    private:
    	std::vector <CFP*> tableau_cfp;
    	int numero_choc;
    };
    
    #endif
    cfp.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
    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
    66
    #ifndef CFP_H
    #define CFP_H
    
    
    #define LARGEUR_ECRAN cimg_library::CImgDisplay::screen_dimx()
    #define HAUTEUR_ECRAN cimg_library::CImgDisplay::screen_dimy()
    
    
    #include "CImg.h"
    #include <iostream>
    #include <fstream>
    #include <string>
    
    #include "choc.h" // dépendance circulaire
    #include "camera.h"
    
    class CFP {
    
    public:
    	CFP(Choc & c, std::string nom_cfp);
    	virtual ~CFP();
    
    	cimg_library::CImg <unsigned short> getImageVisible() const;
    
    	cimg_library::CImg <unsigned short> getImageIR_full() const;
    	cimg_library::CImg <unsigned short> getImageIR_ref() const;
    	cimg_library::CImg <unsigned short> getImageIR_warped() const;
    
    	std::string getNomComposant() const;
    
        virtual void setImageReferenceIR() = 0;
    	virtual void setImageReferenceIR(cimg_library::CImg <unsigned short> ) = 0;
    
    	void setImageVisible();
    	void setImageVisible(cimg_library::CImg <unsigned short>);
    
    	void afficherMix() const;
    
    	void importImageIR(int);
    
    	void lancerWarping();
    
    
    
    protected:	
    	Camera camera;
    	cimg_library::CImg <unsigned short> image_IR_ref;
    	cimg_library::CImg <unsigned short> image_IR_full;// plein écran
    	cimg_library::CImg <unsigned short> image_IR_warped;
    	cimg_library::CImg <unsigned short> image_visible;
    	cimg_library::CImg <unsigned short> image_visible_full;// plein écran
    	std::string nom_composant;
    	int zone;
    
    	Choc      & getChoc()       {return m_choc; }
        Choc const& getChoc() const {return m_choc; }
        int getChocNum() const;
        Choc & m_choc; // référence => on ne change pas de contexte!
    
    	cimg_library::CImg <unsigned char> ChargeLUT(std::string);
    
    	float coeff_mul;
    	void ajusterVisibleEtIRFull();
    };
    
    #endif
    CFP possède 2 classes filles: Antenne, LPT.

    C'est ok pour l'inclusion réciproque entre CFP et Choc (cf FAQ).

    Comment dois-je effectuer mes déclarations?
    - Que dois-je mettre dans la classe Choc concernant CFP et ses deux classes filles?
    - Dans les deux classes filles, quels sont les en-têtes à placer?


    Merci !

  5. #5
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Dans Choc.cpp, il faut inclure Antenne.h pour pouvoir faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Antenne *antenne = new Antenne(*this, nom_antenne);
    Dans tes classes filles, sauf erreur, il faut inclure le .h de leur classe parente (donc cfp.h)

  6. #6
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Merci Eusebe, c'est bien ce que j'avais fait. J'ai toujours autant d'erreurs qui se répètent. Je comprend rien....


    Voici une (petite) partie de ce que m'indique le compilo:
    Compilation...
    warping.cpp
    PDC.cpp
    main.cpp
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2143: erreur de syntaxe*: absence de ')' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2143: erreur de syntaxe*: absence de ';' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2460: 'Camera::Choc'*: utilise 'Camera', en cours de définition
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(16)*: voir la déclaration de 'Camera'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2501: 'Camera::c'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'nom_cfp'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2501: 'Camera::string'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2059: erreur de syntaxe*: ')'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(19) : error C2501: 'Camera::nom_cfp'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(31) : error C2143: erreur de syntaxe*: absence de ';' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(31) : error C2501: 'Camera::Choc'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(31) : error C2501: 'Camera::getChoc'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(31) : warning C4183: 'getChoc'*: type de retour manquant*; fonction membre retournant 'int' assumée
    Je ne sais même pas quoi vous montrer comme code. Il y en a déjà pas mal avant. A tout hasard, voici camera.h, là ou se situe la première erreur (ligne en gras)...
    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
    #ifndef CAMERA_H
    #define CAMERA_H
    
    
    #include "CImg.h"
    #include "choc.h"
    #include "cfp.h"
    
    
    #include <iostream>
    #include <string>
    
    
    
    
    class Camera  {
    
    public:
    	Camera(Choc &c, std::string nom_cfp);
    	~Camera();
    
    	void convertionDLTemperature(cimg_library::CImg <unsigned short>& image);
    	int getNumeroCamera () const;
    	void setNumeroCamera(int numero_cam);
    	void setCorrespondanceCameraNumero(std::string nom_cfp);
    	cimg_library::CImg <unsigned short> importImageIR(int);
    
    private:
    	int numero_camera;
    
    	Choc & getChoc() {return m_choc; }
        Choc const& getChoc() const {return m_choc; }
        int getChocNum() const;
        Choc & m_choc;
    };
    
    #endif
    Merci encore pour votre soutien...

  7. #7
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    J'ai l'impression que tu as encore des problèmes d'inclusion cyclique...

    camera.h inclus choc.h qui inclus lui-même camera.h.

    Or, a priori, tu n'en a pas besoin puisque tu n'utilises que des références vers Choc.

    Essaie en mettant dans camera.h "class Choc;" au lieu de #include "choc.h", et met ton include dans camera.cpp.

    (tu devrais même pouvoir faire ça avec les autres inclusions de classes...)

    (re)voir la FAQ : http://c.developpez.com/faq/cpp/?pag...erence_croisee

  8. #8
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par Eusebe
    J'ai l'impression que tu as encore des problèmes d'inclusion cyclique...
    J'ai l'impression que tu as raison, je vais jeter un coup d'oeil...
    Tu crois que ça pourrait donner ce genre d'erreur????

  9. #9
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    J'ai toujours pas trouvé...
    Dans quel cas un class CFP; peut-il replacé un #include "cfp.h" ???

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Citation Envoyé par poukill
    J'ai toujours pas trouvé...
    Dans quel cas un class CFP; peut-il replacé un #include "cfp.h" ???

    Dans tous les modules où des instances de CFP sont référencées (sous forme de pointeur ou de référence) mais sans être créées, accédées ni détruites.

    La règle est : commence toujours par voir si un ne pourrait pas suffire dans un .h, et si ça coince tu mets en dernier ressort.

  11. #11
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 464
    Par défaut
    Sinon ma méthode perso pour éviter les problèmes d'inclusions cycliques consiste à faire un petit graphe des dépendances sur papier;

    la projection mentale a ses limites

  12. #12
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    258
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 258
    Par défaut
    Citation Envoyé par rigobert
    Dans tous les modules où des instances de CFP sont référencées (sous forme de pointeur ou de référence) mais sans être créées, accédées ni détruites.

    La règle est : commence toujours par voir si un ne pourrait pas suffire dans un .h, et si ça coince tu mets en dernier ressort.
    Cette règle à des limites, surtout dans le cas de classes template : il faut absolument respecter les paramètres du template, y compris les valeurs par défaut. Pour les classes de la bibliothèque standard, ça devient très vite lourd. Quand ces classes sont en plus dans un namespace, mieux vaut éviter, pour des raisons de lisibilité. Coup de chance, les inclusions cycliques avec la bibliothèque standard sont inexsitantes, à moins d'aller modifier le code de ses classes.

  13. #13
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Visiblement, choc.h n'est pas lu entièrement lorsque camera.h est lu.
    Est-ce que choc.h fait un include de camera.h ?
    Quelle est la suite (dans l' ordre) des includes pour main.cpp ?

  14. #14
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Citation Envoyé par diogene
    Visiblement, choc.h n'est pas lu entièrement lorsque camera.h est lu.
    Est-ce que choc.h fait un include de camera.h ?
    non (cf code de choc.h plus haut)

    Quelle est la suite (dans l' ordre) des includes pour main.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
    22
    23
    24
    25
    26
    27
    28
     
    #include "CImg.h"
     
     
    #include <iostream>
    #include <vector>
     
    #include "choc.h"
     
     
    int main()
    {
    	int num_choc;
    	std::cout << "Numero du choc ?";
    	std::cin >> num_choc;
     
    	Choc choc(num_choc);
     
    	std::cout <<"Nom du coupleur?";
     
    	choc.ajouterAntenne("C3");
     
    	std::vector<CFP*> cfp;
    	cfp = choc.getTableauCFP();
    	cfp.front()->lancerWarping();
     
    	return (0);
    }

    Je crois que j'ai trouvé mon problème, mais pas la solution: il vient de camera.h !

    En effet, dans camera j'ai une référence à Choc. Mais si je mets un include, ça fait une inclusion cyclique! Et une forward declaration ne suffit pas!!!
    Zut...

    Voici un schéma des dépendances:

    choc -> antenne, lpt

    cfp -> warping, camera

    antenne -> cfp

    lpt -> cfp

    camera -> choc

    warping -> PDC
    La ligne en gras est celle qui coince!!! Si vous avez une idée, je suis super preneur (bientôt la fin de mon projet ? )

  15. #15
    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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Par défaut
    En effet, dans camera j'ai une référence à Choc. Mais si je mets un include, ça fait une inclusion cyclique! Et une forward declaration ne suffit pas!!!
    Si, ça devrait.

  16. #16
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    Voici ce que m'indique le compilo (en partie):

    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\antenne.h(12) : error C2504: 'CFP' : classe de base non définie
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\antenne.h(14) : error C2143: erreur de syntaxe : absence de ')' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\antenne.h(14) : error C2143: erreur de syntaxe : absence de ';' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\antenne.h(14) : error C2460: 'Antenne::Choc' : utilise 'Antenne', en cours de définition
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\antenne.h(11) : voir la déclaration de 'Antenne'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\antenne.h(14) : error C2501: 'Antenne::c' : Spécificateurs de type ou de classe de stockage manquants

    cfp.cpp(13) : error C2723: 'CFP::~CFP'*: 'virtual' spécificateur de classe de stockage non conforme sur la définition d'une fonction
    cfp.cpp(73) : error C2662: 'CFP::chargeLUT'*: impossible de convertir un pointeur 'this' de 'const CFP' en 'CFP &'
    La conversion perd les qualificateurs
    cfp.cpp(79) : error C2662: 'CFP::chargeLUT'*: impossible de convertir un pointeur 'this' de 'const CFP' en 'CFP &'
    La conversion perd les qualificateurs
    camera.cpp
    camera.cpp(23) : error C2027: utilisation du type non défini 'Choc'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(12)*: voir la déclaration de 'Choc'
    camera.cpp(23) : error C2228: la partie gauche de '.getNumeroChoc' doit avoir un type class/struct/union
    camera.cpp(67) : error C3861: 'IRimages': identificateur introuvable, même avec une recherche qui dépend de l'argument
    antenne.cpp
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(11) : error C2504: 'CFP'*: classe de base non définie
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2143: erreur de syntaxe*: absence de ')' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2143: erreur de syntaxe*: absence de ';' avant '&'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2460: 'LPT::Choc'*: utilise 'LPT', en cours de définition
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(10)*: voir la déclaration de 'LPT'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2501: 'LPT::c'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'nom_cfp'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2501: 'LPT::string'*: Spécificateurs de type ou de classe de stockage manquants
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2059: erreur de syntaxe*: ')'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\lpt.h(13) : error C2501: 'LPT::nom_cfp'*: Spécificateurs de type ou de classe de stockage manquants
    @Laurent : c'est vrai que la grosse partie des erreurs ne viennent pas de là...
    Le compilo ne voit pas la classe mère CFP pour Antenne...
    Pourtant, j'ai un include "cfp.h"

  17. #17
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Tu as combien de fichiers d'en-tête ?
    Tu pourrais nous mettre tous leurs codes ?

  18. #18
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Citation Envoyé par poukill
    Le compilo ne voit pas la classe mère CFP pour Antenne...
    Pourtant, j'ai un include "cfp.h"
    Cela montre un autre problème d'inclusions cycliques.

    Mon conseil: Commence par toutes les remplacer par des forward declarations, mets des inclusions là où tu t'aperçois que c'est indispensable, et ainsi, à moins d'avoir des fonctions inline qui manipulent des objets d'une autre classe, ça devrait marcher.

    Si tu te retrouves avec des cycles à cause de fonctions inline, tu n'as plus le choix: Il te faudra les désinliner (je me moque de savoir si ce mot existe ou non).
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  19. #19
    Membre Expert
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Par défaut
    OK médinoc, j'ai désinliner mes fonctions membres qui retournaient un choc...

    Après quelques heures de folie, le compilo ne m'indique plus que trois erreurs:
    Compilation...
    warping.cpp
    PDC.cpp
    main.cpp
    lpt.cpp
    choc.cpp
    cfp.cpp
    cfp.cpp(13) : error C2723: 'CFP::~CFP'*: 'virtual' spécificateur de classe de stockage non conforme sur la définition d'une fonction
    camera.cpp
    camera.cpp(25) : error C2027: utilisation du type non défini 'Choc'
    c:\Documents and Settings\GD280706\Bureau\Analyse v1.1\Analyse\camera.h(20)*: voir la déclaration de 'Choc'
    camera.cpp(25) : error C2228: la partie gauche de '.getNumeroChoc' doit avoir un type class/struct/union
    La première et la deuxième bloque à camera.cpp à la ligne en gras:
    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
    Camera::Camera(Choc &c, std::string nom_cfp)
    :m_choc(c)
    {
    	//On initialise la structure Endoscope
    	int cr = Init_Endoscope (getChocNum(), numero_camera, &Endoscope[numero_camera-1]);
    
    	// On cherche le numéro de caméra correspondant au nom du composant en cours
    	setCorrespondanceCameraNumero(nom_cfp);
    
    
    	std::cout << "\ncamera initialisee" << std::endl;
    }
    
    Camera:: ~Camera () 
    {
    	std::cout << "Camera détruite";
    }
    
    Choc & Camera::getChoc() const {return m_choc; }
    
    int Camera::getChocNum() const { return (getChoc().getNumeroChoc()); }
    
    int Camera::getNumeroCamera () const {return numero_camera; }
    
    void Camera::setNumeroCamera(int numero_cam)
    {
    	numero_camera = numero_cam;
    }
    La troisième, c'est au niveau du destructeur virtuel de cfp...

    Merci encore pour votre aide!

  20. #20
    Membre Expert
    Avatar de Eusebe
    Inscrit en
    Mars 2006
    Messages
    1 992
    Détails du profil
    Informations personnelles :
    Âge : 47

    Informations forums :
    Inscription : Mars 2006
    Messages : 1 992
    Par défaut
    Et tu peux nous montrer ton cfp.cpp ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. problème de compilation sous visual C++
    Par fabmili dans le forum MFC
    Réponses: 4
    Dernier message: 08/02/2004, 19h52
  2. problème de compil devc++ socket
    Par stefdem dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 11/12/2003, 11h33
  3. Réponses: 1
    Dernier message: 29/10/2003, 12h16
  4. Problème de compilation de la DLL du XMLRad
    Par [DreaMs] dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/04/2003, 16h46
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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