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 :

Question sur pointer un objet d'un array


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut Question sur pointer un objet d'un array
    Bonjour,

    Voici ce que j'ai :
    Une struct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    struct Sprite
    	{
    		string name;
    		LPDIRECT3DTEXTURE9* texture;
    		int currentFrame, startFrame, endFrame;
    		int startTime, delay, direction, columns;
    	};
    Un dynamic array qui en contient plusieurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<Sprite> m_spritesStruct
    Et un dynamic array qui contient des textures
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    vector<LPDIRECT3DTEXTURE9> m_textures;
    Est-il possible qu'un pointeur d'une struct qui est dans le array m_spritesStruct pointe sur une texture qui est dans l'array m_textures ?

    Je demande cela car le pointeur de la struct marche mais dès que je place l'objet struct dans le array le pointeur ne marche plus.

    Cordialement,

    rXp>!<

  2. #2
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 59
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	m_spritesStruct[i].texture = &m_textures[j];
    ou alors j'ai pas tout saisi..

    Cdt

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    Citation Envoyé par kessoufi Voir le message
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	m_spritesStruct[i].texture = &m_textures[j];
    ou alors j'ai pas tout saisi..

    Cdt
    Alors je vous montre le 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
    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
    void SpriteHelper::CreateSprite(string path, string name, int startFrame, int endFrame, int direction, int columns, int delay)
    {
    	bool exist = false;
    	vector<Sprite>::iterator it;
            //see if the struct already exist
    	for(it = m_spritesStruct.begin();it<m_spritesStruct.end();it++)
    	{
    		Sprite s = *it;
    		if(s.name == name)
    		{
    			exist = true;
    		}
    	}
     
            //if not we create a new sprite struct
    	if(!exist)
    	{
    			Sprite sprite;
    			sprite.name = name;
    			sprite.currentFrame = -1;
    			sprite.direction = direction;
    			sprite.columns = columns;
    			sprite.endFrame = endFrame;
    			sprite.startFrame = startFrame;
    			sprite.delay = delay;
     
    			int i = 0;
    			vector<string>::iterator it;
                            //look through the name list to find if the texture is loaded
    			for(it = m_texturesName.begin();it<m_texturesName.end();it++)
    			{
    				string str = *it;
                                    //if it is
    				if(str == path)
    				{
                                            //set the texture pointer to the struct
    					sprite.texture = &m_textures.at(i);
    				}
    				i++;
    			}
                            //add the struct to the array
    			m_spritesStruct.push_back(sprite);
    	}
    }
    Voici le code de la méthode. Donc sprite.texture n'a aucun problème mais si je regarde dans le m_spritesStruct une fois le sprite ajouté, je vois que le sprite à des problèmes de pointer.

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 59
    Par défaut
    est ce que par hasard le destructeur de Sprite (s'il y'en a) libère la texture ?

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    165
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2007
    Messages : 165
    Par défaut
    Citation Envoyé par kessoufi Voir le message
    est ce que par hasard le destructeur de Sprite (s'il y'en a) libère la texture ?
    Non, tout se fait dans le destructeur de la classe en question et non dans la structure.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    59
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Mars 2011
    Messages : 59
    Par défaut
    Donc si je comprends bien, après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_spritesStruct.push_back(sprite);
    cet assert échoue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assert(sprite.texture == m_spriteStruct[m_spriteStruct.size() -1].texture);
    sinon à partir de quelle ligne ça échoue ?

Discussions similaires

  1. question sur la gestion objet GTK
    Par Christophe dans le forum GTK+ avec C & C++
    Réponses: 1
    Dernier message: 16/09/2011, 13h54
  2. Question sur la prog objet avec R, S4
    Par Hydro999 dans le forum R
    Réponses: 4
    Dernier message: 10/11/2010, 11h44
  3. [FLASH 8] Question sur la portée des objets.
    Par i_shinji dans le forum Flash
    Réponses: 1
    Dernier message: 02/11/2005, 17h18
  4. Questions sur la programmation objet en Delphi
    Par Manopower dans le forum Débuter
    Réponses: 20
    Dernier message: 15/06/2005, 15h39
  5. Réponses: 2
    Dernier message: 17/03/2004, 13h58

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