Bonjour à tous,

Je me demande s'il est possible de réaliser des itérateurs directement sur des attributs plutôt que des objets. Par exemple, je sais comment réaliser ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
struct Position { float x; };
customMap<int, Position> mMap;
//[...]
 
for(auto it{ mMap.begin() }; it != mMap.end(); ++it)
{
	std::cout << it->second.x << std::endl;
}
Pour info, la classe customMap, comme son nom l'indique est une classe perso reprenant globalement le fonctionnement de std::map, et est donc basé sur un tableau de std::pair.
L’itérateur, dans mon cas actuel, est donc un simple pointeur sur une occurrence de ce tableau de std::pair.
Cependant, je souhaite pouvoir faire abstraction de l'accès à l'objet, en me permettant de réaliser directement ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
struct Position { float x; };
customMap<int, Position> mMap;
//[...]
 
for(auto it{ mMap.begin() }; it != mMap.end(); ++it)
{
	std::cout << it->x << std::endl;
}
Vous l'aurez compris, le but est de pouvoir faire quelque chose de plus convivial en évitant à l'utilisateur d'avoir à connaitre le format de la structure sous-jacente, sachant que la classe customMap gère les clés (cf it->first) de manière autonome.

Après, je parle d'itérateur parce que c'est comme ça que j'imagine la chose à l'heure actuelle, mais peut-être avez-vous une idée plus simple, permettant à l'utilisateur de ne parcourir que les attributs désignés ?

Merci d'avance.