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 :

error C2079: .. uses undefined class


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut error C2079: .. uses undefined class
    Bonjour,

    J'ai un probleme avec une de mes classes.

    J'ai cree une classe CCourbes_de_niveau et tout compile tres bien mais qd je declare un objet de cette classe, j'obtient cette erreur a la compilation :

    Compiling...
    Courbes_de_niveau.cpp
    c:\...\model.h(181) : error C2079: 'courbes_de_niveau' uses undefined class 'CCourbes_de_niveau'


    voici le Courbes_de_niveau.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
     
    // Courbes_de_niveau.h: interface for the CCourbes_de_niveau class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #if !defined(AFX_COURBES_DE_NIVEAU_H__BE465260_1823_4854_9F41_96EC4D5B570C__INCLUDED_)
    #define AFX_COURBES_DE_NIVEAU_H__BE465260_1823_4854_9F41_96EC4D5B570C__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
     
    #include "mathematique.h"
     
    class Model;		// dit que la classe existe (Cmodel.h declare ds le .cpp)
     
    struct ligne;
    struct Vector4;
     
    class CCourbes_de_niveau  
    {
     
    public:
    	Model	*model;
    	bool	from;
    	double	heigh;
     
    	double			r, g, b;			// pour convertir de RGB en HSV
     
    	double	borne_min, borne_max;
    	int		nombre_de_courbe;
     
    // *courbe contiendra toutes les lignes qui forment la courbe et longuer represente la somme des longueurs des lignes qui forment la courbe
     
    	struct Courbe_de_niveau  
    	{
    		ligne		*courbe;
    		double		longueur;
    		int			nombre_de_lignes;
    		int			mem_alloue;
    		Vector4		*equation_plan;
    	};
     
    	Courbe_de_niveau	*tableau_des_courbes;	// contient dans chacune de ses cases les informations sur une courbe de niveau
     
     
    public:
    	CCourbes_de_niveau();
    	virtual ~CCourbes_de_niveau();
     
    	void Calcul_des_courbes(Model *model_recu, bool from, double heigh);
    	void Traiter_courbes(int num_courbe, double heigh);
    	void Remplir_tableau_des_courbes(int num_courbe, Vector4 plan);
     
    	void Calcul_plan_de_coupe(Model *model_recu);
     
    	void Dessiner_courbes_de_niveau();
    	void Dessiner_figure_coupee_par_plan();
     
    	void Liberer_memoire_courbes_niveau();
    };
     
    #endif // !defined(AFX_COURBES_DE_NIVEAU_H__BE465260_1823_4854_9F41_96EC4D5B570C__INCLUDED_)
    voici le Courbes_de_niveau.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
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
     
    // Courbes_de_niveau.cpp: implementation of the CCourbes_de_niveau class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #include "stdafx.h"
    #include "Osiris.h"
    #include "Courbes_de_niveau.h"
    #include "CourbesDlg.h"            // boite de dialogue
     
    #include "OsirisDoc.h"
    #include "OsirisView.h"
     
    #include "Model.h"                  // contient un modele d'objet 3D
     
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
     
    class Model;
     
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    CCourbes_de_niveau::CCourbes_de_niveau()
    {
    	tableau_des_courbes	= NULL;
    }
     
    CCourbes_de_niveau::~CCourbes_de_niveau()
    {
     
    }
     
    .
    .
    .
    la suite est surement sans importance
    voici le Model.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
     
    // Model.h: interface for the Model class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #if !defined(AFX_MODEL_H__C2B5528B_1F02_4B8C_AD12_59F475730504__INCLUDED_)
    #define AFX_MODEL_H__C2B5528B_1F02_4B8C_AD12_59F475730504__INCLUDED_
     
    #if _MSC_VER > 1000
    #pragma once
    #endif // _MSC_VER > 1000
     
    #include <algorithm>
    #include <deque>
    #include <vector>
    #include <set>
     
    #include "image.h"
    #include "Quadric3.h"
    #include "vector3.h"
    #include <GL\gl.h>
    #include <GL\glu.h>
     
    #include "mathematique.h"
    #include "Courbes_de_niveau.h"
     
     
    #define	 espace_alloue		500
     
    class CCourbes_de_niveau;
     
    class Model
    {
    	...
    public:
    	...
    	CCourbes_de_niveau			courbes_de_niveau;  // le probleme vient de cette ligne
    ...

    voici le Model.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
     
    // Model.cpp: implementation of the Model class.
    //
    //////////////////////////////////////////////////////////////////////
     
    #include "stdafx.h"
    #include "math.h"
    #include "Model.h"
     
    #include "Quadric3.h"
     
    #include "glext.h"
     
    #define EPSILON 0.0005
     
    #ifdef _DEBUG
    #undef THIS_FILE
    static char THIS_FILE[]=__FILE__;
    #define new DEBUG_NEW
    #endif
     
    //////////////////////////////////////////////////////////////////////
    // Construction/Destruction
    //////////////////////////////////////////////////////////////////////
    ....

    Le probleme vient surement du fait que dans ma classe courbes de niveau j'ai un include Model.h car j'ai besoin d'avoir un pointeur vers un modele pour faire les operations dessus. Et dans Model.h j'ai un include vers courbe de niveau car j'y declare mon objet Ccourbes_de_niveau.

    J'ai mis des :
    class CCourbes_de_niveau;
    et
    class Model;

    mais ca n'a pas l'air de regler le probleme.


    J'ai deja utilise cette classe avec un autre programme et le mm entrelacement des include et ca n'avait pas pose probleme donc je ne vois pas trop ou est le probleme. Mais comme je ne m'y connait pas trop la dedans...


    Quelqu'un aurait il une idee de comment regler ce probleme?

    Merci d'avance

  2. #2
    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
    Si model.h inclut courbes_de_niveau.h, tu ne devrais pas avoir de problème...

    Et tu ne devrais même pas avoir besoin de la déclaration anticipée de CCourbes_de_niveau...
    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.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    ben oui model.h inclu Courbes_de_niveau.h

    et Courbes_de_niveau.h inclu model.h

    donc je vois pas trop ce que veux dire cette erreur...

  4. #4
    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
    Courbes_de_niveau.h ne doit pas inclure model.h.
    Normalement, il peut se contenter d'une simple déclaration anticipée.
    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.

  5. #5
    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
    Courbes_de_niveau.h inclu model.h
    Où ça ?

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Avril 2007
    Messages : 11
    Par défaut
    merci pour votre aide

    ai teste avec

    ds courbes_de_niveau.h, juste :
    class Model; (pas le include model.h)
    (pas de reference a model dans courbes_de_niveau.cpp)


    ds model.h
    #include "Courbes_de_niveau.h"
    et teste avec et sans class CCourbes_de_niveau;

    rien dans model.cpp

    mais c'est vrai que dans model.h et dans courbes_de_niveau.h il y a un include "matematique.h" qui lui mm inclu model.h (je sais c'est un peu emmele mais ca marchait dans l'autre programme)

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

Discussions similaires

  1. vc\include\deque(518) : error C2027: use of undefined type
    Par MoonDragon dans le forum C++/CLI
    Réponses: 5
    Dernier message: 13/04/2012, 12h20
  2. [1.x] [sfPropelPager] Fatal error: Undefined class constant
    Par beanl dans le forum Symfony
    Réponses: 0
    Dernier message: 14/06/2011, 09h57
  3. Réponses: 3
    Dernier message: 21/01/2010, 00h24
  4. Réponses: 2
    Dernier message: 16/08/2009, 13h20
  5. error:invalid use of undefined type
    Par assif dans le forum C++
    Réponses: 2
    Dernier message: 25/10/2006, 21h11

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