Tableaux et classes c++

Résolu
seabust Messages postés 741 Date d'inscription   Statut Membre Dernière intervention   -  
seabust Messages postés 741 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Je développe un programme en c++, j'ai un objet de classe carte qui a un attribut contenu qui contient un tableau bi-dimensionnel (x,y) contenant des objets de classe Zone.
or je n'arrive pas, par une methode de l'objet carte pouvoir modifier les attributs d'un objet Zone voulu. car je pe retrouve avec des copies de ces objets.

Je vous joint la methode permettant de renvoyer un objet Zone voulu:

Zone Carte::get_zone(int x , int y)
{
	Zone &case=contenu[x][y];
	return case;
	
	
}


j'ai déja éssayé d'utiliser des pointeurs mais j'obtient l'erreure suivante:

conversion from 'Zone*' to non-scalar type 'Zone' requested




2 réponses

Char Snipeur Messages postés 9813 Date d'inscription   Statut Contributeur Dernière intervention   1 299
 
Il faut retourner une référence, sinon, tu retournes une copie.
Zone& Carte::get_zone(int x , int y) 
{ 
 return contenu[x][y]; 
  
} 
const Zone Carte::get_zone(int x , int y)const 
{ 
 return contenu[x][y]; 
  
} 


La première méthode sert à la modification et s'applique directement à un objet, la deuxième sert à la lecture et s'appliquera plutôt à des objets constant ou temporaires. Dernière précision, ce n'est pas l'une ou l'autre qu'il faut, mais les deux.
La vrai soumission c'est quand les esclaves s'inquiètent du cours du coton.
Char Snipeur
3
Nabla's Messages postés 18203 Date d'inscription   Statut Contributeur Dernière intervention   3 193
 
+1 ...

J'ajouterai que pour comprendre la nnotion de copie / référence / pointeur, il faut s'interesser aux notions de pile d'appels et de tas mémoire. tout ce qui est déclaré dans l'entête d'une fonction passe par la pile d'appels. Si on place des pointeurs, les pointeurs sont sur la pile d'appels, mais "pointent" sur l'objet (qui lui peut être situé sur le tas ou sur la pile)....

quand on crée avec un "new" on crée sur le tas, sinon c'est sur la pile ...
0
seabust Messages postés 741 Date d'inscription   Statut Membre Dernière intervention   101
 
merci :D
0