Dans le cadre d'un projet de simulateur de conduite ferroviaire, je souhaite réaliser la chose suivante :
J'aimerais créer un objet "locomotive", qui contient lui même des sous objets "frein", "traction", etc etc, pour pouvoir ensuite avoir accès à des variables liées à ces sous système. C'est surtout dans un objectif de clarté du code que je me demande s'il est possible de créer des classes imbriquées les unes dans les autres. J'aimerais par exemple pouvoir modifier la pression dans les freins de la façon suivante :
locomotive.frein.pressionCylindre = 5;
Sauf que, si j'ai bien compris comment implémenter des classes, je ne trouve pas grand chose à ce sujet (en dehors d'un cours dédié au cpp mais dont les lignes ne semblent pas compiler sous arduino...)
Ok merci je vais essayer ça ! Mais du coup faut-il instancier "CFrein" quelque part ? Où c'est le rôle de "frein;" après la définition de la classe dans ton exemple ?
Il est instancié en même temps que la définition de CFrein dans la classe CLocomotive. On aurait pu aussi séparer la définition de CFrein et l'instanciation de frein.
Après test, je me retrouve avec une erreur que j'avais déjà en faisait mes essais au préalable :
fs_main:22:7: error: request for member 'frein' in 'loco', which is of non-class type 'Locomotive()'
loco.frein.pressionCG = 5;
^
exit status 1
request for member 'frein' in 'loco', which is of non-class type 'Locomotive()'
Avec le code suivant :
class Locomotive {
public:
Locomotive();
class Frein {
public:
Frein();
int pressionCG;
} frein;
};
Locomotive loco();
void setup(){
}
void loop(){
loco.frein.pressionCG = 5;
}