Visibilité d’un objet d’une autre classe C++
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.cpp
Code:
1 2 3 4 5 6 7 8 9 10
|
//#include <iostream>
#include "Domus.h"
Domus domus;
int main()
{
domus.startDomus () ;
} |
Nextion.h
Code:
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_H |
Nextion.cpp
Code:
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()
{} |
Domus.h
Code:
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:
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()
{} |