Pointeurs et Classes

Tellurian Messages postés 15 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 10 mars 2006 - 9 mars 2006 à 16:52
Tellurian Messages postés 15 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 10 mars 2006 - 10 mars 2006 à 14:39
Bonjour,
J'essai de créer un moteur graphique 2d avec opengl(glut...) en c++ et j'ai un probleme sur la liason des objets en gro.

J'ai les classes suivantes:
CTexture et CSprite que j'essai de lier mais j'ai une erreur lors du lancement de l'application et je ne voi pas d'où ca peut venir.

Le code (inclusion et code inutile mis à part):

<hr size="2" width="100%">-CTexture.h:

class CTexture
{
...
}
...
<hr size="2" width="100%">-CSprite.h:

class CSprite
{
private:
CTexture * m_pTexture; //Pointeur vers un objet CTexture

public:
void SetTexture(CTexture * _pTexture);

...
};
...
<hr size="2" width="100%">-CSprite.cpp:

void CSprite::SetTexture(CTexture * _pTexture)
{
*m_pTexture = *_pTexture;
}
...
<hr size="2" width="100%">-Main.h:

CTexture myTexture;

CSprite mySprite;
<hr size="2" width="100%">-Main.cpp:dans la fonction main

mySprite.SetTexture(&myTexture);
<hr size="2" width="100%">
Merci d'avance

3 réponses

cs_wail50 Messages postés 1 Date d'inscription dimanche 26 février 2006 Statut Membre Dernière intervention 9 mars 2006
9 mars 2006 à 17:49
je suis un débutant dans la programmation avec C++ quelle sont les notions de bases que avec eux puisse je commence.(des documents en langue francaise préférer)
en urgent .
Merci d'avance
cs_satellite34 Messages postés 688 Date d'inscription mercredi 6 avril 2005 Statut Membre Dernière intervention 2 juin 2006 1
9 mars 2006 à 17:56
-CSprite.h:

class CSprite
{
CSprite(CTexture *m_Texture); // ctor, avec en param une texture

private:
CTexture * m_pTexture; //Pointeur vers un objet CTexture

public:
void SetTexture(void);

...
};


-CSprite.cpp:

CSprite::CSprite(CTextture *m_Texture), m_pTexture(m_Texture) // ctor
{
}

void CSprite::SetTexture(void)
{
m_pTexture->TesFonctions();
}

Voila, je ne peux pas vérifier mais logiquement ca devrai fonctionner comme ca;

@+;
satellite34
Tellurian Messages postés 15 Date d'inscription vendredi 5 septembre 2003 Statut Membre Dernière intervention 10 mars 2006
10 mars 2006 à 14:39
Désolé pour mon francais trés mauvais.
L'initialisation du pointeur doit être faite dans le constructeur de CSprite (Merci satellite34 ).

En fait je vien de trouver d'où vien l'erreur, et ca n'a rien à voir avec cette partie du code :

dans le fichier "CTileMap.h":

#include "CTexture.h"
#include "CSprite.h"
#include <vector>

class CTileMap
{
private:
std::vector<CTexture> m_Textures;
std::vector<CSprite> m_Sprites;
public:
bool LoadMap();
...
}

dans le fichier "CTileMap.cpp":

#include "CTileMap.h"

CTileMap::LoadMap()
{
???
...
}

Voila, j'ai mes 2 tableaux dynamiques sont remplis au moment de l'execution de LoadMap() et je ne sais pas comment fair pour initialiser le pointeur CSprite::m_pTexture de chaque occurence de sprite dans CTileMap::m_Sprites

Faut il que jutilise des tableaux de pointeurs au lieu de la STL...

Merci à tous.
Rejoignez-nous