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 :

allocation dynamique d'une structure static


Sujet :

C++

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    502
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 502
    Points : 227
    Points
    227
    Par défaut allocation dynamique d'une structure static
    salut,

    je n'arrive a compiler mon programme :

    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
    67
    68
    69
    70
    71
    #ifndef _OBJETSCENE_H
     
    #define _OBJETSCENE_H
     
     
     
     
     
     
     
    #include "Ogre.h"
     
    #include "ExampleApplication.h"
     
     
     
     
     
    class ObjetScene : public ExampleApplication
     
    {
     
    public:
     
     
     
    	 struct Objet{
     
    		Ogre::SceneNode * nodeParent;
     
    		Ogre::Entity * entityParent;
     
    		struct Node{
     
    		Ogre::SceneNode * sceneNode[17];
     
    		Ogre::Entity * entity[17];
     
    		};
     
    		struct Node node;
     
    	};
     
     
     
    	static Objet * objet;
     
     
     
     
     
     
     
     
     
    	static void destructionObjet(ObjetScene::Objet* objet);
     
    	static void constructionObjet(ObjetScene::Objet * objet);
     
     
     
     
     
     
     
    };
     
     
     
    #endif

    le code source

    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
    #include "ObjetScene.h"
     
    #include <stdio.h>
     
     
     
     
     
     
     
     void  ObjetScene::destructionObjet(ObjetScene::Objet *objet)
     
    {    
     
     
     
    	free(&ObjetScene::objet);
     
    }
     
     
     
     void  ObjetScene::constructionObjet(ObjetScene::Objet *objet)
     
    {
     
    	ObjetScene::objet=NULL;
     
     
     
    	ObjetScene::objet =(Objet*) malloc (sizeof(Objet));
     
    }
    l'erreur de compilation :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >ObjectScene.obj : error LNK2001: unresolved external symbol "public: static struct ObjetScene::Objet * ObjetScene::objet" (?objet@ObjetScene@@2PAUObjet@1@A)
     
    1>C:\Documents and Settings\domnik\Mes documents\Visual Studio 2008\Projects\Ogre\Debug\Ogre.exe : fatal error LNK1120: 1 unresolved externals
     
    1>Build log was saved at "file://c:\Documents and Settings\domnik\Mes documents\Visual Studio 2008\Projects\Ogre\Ogre\Debug\BuildLog.htm"
     
    1>Ogre - 2 error(s), 0 warning(s)
     
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
    merci !

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Mars 2009
    Messages : 31
    Points : 35
    Points
    35
    Par défaut
    Bonjour,

    Les membres statiques déclarés dans une classe doivent être définis quelquepart. Il faudrait donc rajouter quelque chose du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Objet *ObjetScene::objet = 0; // voire new Objet

  3. #3
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Points : 13 017
    Points
    13 017
    Par défaut
    Citation Envoyé par Asmod_D Voir le message
    salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	ObjetScene::objet =(Objet*) malloc (sizeof(Objet));

    C'est étrange de faire du malloc/free. Pourquoi ne pas faire des new/delete ?
    Dans la même veine, pourquoi utiliser des tableaux (sceneNode par exemple) alors que tu as des conteneurs (std::vector par exemple). Et pourquoi avoir des tableaux sur pointeurs ?

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Points : 4 732
    Points
    4 732
    Par défaut
    En ce qui concerne malloc, c'est une grave source de bug avec les objets en C++ car malloc n'appelle pas le constructeur. Tes objets sont donc dans un état indéfini

    Petit remarque perso: tu veux faire de la 3D en C++ sans maitriser les bases de C++, je pense que tu cours droit à l'échec. Va d'abord relire tes cours de C++ en ensuite tu pourra réussir la 3D.
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    502
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 502
    Points : 227
    Points
    227
    Par défaut
    merci pour vos reponse !

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

Discussions similaires

  1. Allocation dynamiques dans une structure
    Par markhor456 dans le forum Débuter
    Réponses: 4
    Dernier message: 20/04/2013, 19h09
  2. Allocation dynamique d'une structure
    Par silma dans le forum Débuter
    Réponses: 6
    Dernier message: 05/03/2012, 12h32
  3. Allocation dynamique d'une structure
    Par trall dans le forum C
    Réponses: 11
    Dernier message: 13/05/2010, 09h57
  4. allocation dynamique dans une structure !
    Par grodashe dans le forum C
    Réponses: 2
    Dernier message: 31/12/2009, 11h17
  5. Réponses: 3
    Dernier message: 02/01/2008, 14h02

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