Voici un mini programme C++ sous CodeBlocs
Ce que je cherche à faire :
J’ai une classe principale <Domus> qui en déclare une vingtaine d’autres secondaires dans un projet de domotique.
Cette classe contient des tableaux qui sont alimentés par diverses classes secondaires principalement des capteurs et des données Internet), je n’en ai indiqué qu’une pour simplifier.
D’’autres classes secondaires exploitant ces données (par exemple l’IHM <Nextion> qui affiche données et courbes).
Je n’ai pas compris comment faire plus proprement (sans variables globales) car il me faut des tableaux d’échanges entre toutes les classes, et je pensais que la classe principale était l’endroit pour les regroupper.
Mais ma classe secondaire, qui appelle qui une méthode de la classe principale ne voit pas son objet <domus>.
Merci chers confinés pour votre aide
www.voilec.com
main.cppNextion.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 //#include <iostream> #include "Domus.h" Domus domus; int main() { domus.startDomus () ; }Nextion.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 #ifndef NEXTION_H #define NEXTION_H class Nextion // Une des 20 classes annexes { public: float allSensors [11] ; //Tableau de transfert entre classes void nextGetData (void) ; Nextion(); ~Nextion(); }; #endif // NEXTION_HDomus.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 #include "CC_Nextion.h" #include "CC_Domus.h" void CC_Nextion::getDataNxt () { float x = ccdomus.getData (0); std::cout<< x<< '\n'; } CC_Nextion::CC_Nextion() {} CC_Nextion::~CC_Nextion() {}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #ifndef DOMUS_H #define DOMUS_H #include <array> class Nextion ; class Domus // Classe principale { public: //static float allSensors [11] ; static std::array<float, 11> allSensors; // declare a float array with length 11 void startDomus (void) ; float getData(short number) ; Domus(); ~Domus(); }; #endif // DOMUS_H
Domus.cpp
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 #include "Domus.h" Nextion nxtion ; float Domus::allSensors [] = {0} ; // **************************************************** void Domus::startDomus () { allSensors [0] = 9876 ; // Une des valeurs calculée par une autre classe nxtion.nextGetData (); // Simule une demande de la classe secondaire } // **************************************************** float Domus::getData(short number) { return (allSensors [number]) ; } // **************************************************** Domus::Domus() {} Domus::~Domus() {}
Partager