[C++] Probleme pour retourner un tableau

Probleme pour retourner un tableau [C++] - C++ - Programmation

Marsh Posté le 23-10-2001 à 18:34:04    

J'ai une classe contenant un tableau d'une structure Axe et une fonction retournant un pointeur sur ce tableau:
 
struct Axe
{
int x, y;
};
 
class A
{
private:
Axe *tab[100];
public:
Axe * GetTab() {return *tab;}
};
 
Ensuite j'ai une autre classe qui contient une fonction récupérant et traitant ce tableau:
 
class B
{
public:
void Poum(Axe **pAxe) {pAxe[0]->x = 0;}
};
 
Pis dans mon main je met en rapport les objets de ces 2 classes:
 
void main()
{
A *pA
B *pB
Axe *p = pA->GetTab();
 
pB->Poum(&p); //va traiter le tableau de pA
}
 
Voila et quand je lance l'application se ferme directe, c'est sûrement un probleme de pointeur.
Avez-vous une meilleure solution pour retourner un tableau, le passer en paramètre pour le retraiter dans une autre fonction?

Reply

Marsh Posté le 23-10-2001 à 18:34:04   

Reply

Marsh Posté le 23-10-2001 à 18:56:27    

Axe *tab[100];  
déclare un tableau de 100 _pointeurs_ sur Axe.
 
Axe tab[100];
déclare un tableau de 100 Axe.
 
Axe* tab;
déclare un pointeur sur Axe. peut être un tableau, dans ce cas c'est mieux de te faire un classe tableau. pour le moment, tu peut garder le pointeur et son nombre d'instances dans la classe:
int numAxes;
 
et quand tu construits :
class A
{
  A(int numAxes)
 
A::A()
{
  this->numAxes = numAxes;
  tab = new Axe [numAxes];
}
 
le GetTab() se résume alors à { return tab; }
 
pour ton 'poum' :  
 
void Poum(Axe* pAxe) { pAxe[0]->x = 0; }
 
je ne vois pas bien l'intérêt de passer par un pointeur de pointeur ...  
 
ah au fait, ton applic crashe car tu n'alloues nulle part de mem, tu ne fais que déclarer des pointeurs.

Reply

Marsh Posté le 23-10-2001 à 18:57:07    

l'objet std::vector de la stl ? :D

Reply

Marsh Posté le 23-10-2001 à 18:57:16    

Dans la classe A, l'instruction Axe *tab[100], cree un tableau de 100 pointeurs sur axe. mais ces pointeurs ne sont pas initialisés. Donc le tab[0]->x = 0 plante pcq tab[0] n'est pas un pointeur valide.

Reply

Marsh Posté le 23-10-2001 à 18:57:33    

et si tu expliquais en bon français ce que tu veux faire aussi ... plutôt que de balancer du c++ cash.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed