Bonsoir,
Je pense que c'est ce que vous cherchez à faire :
class Myclass
{
private:
int memvar;
public:
int F2();
void set();
};
// Définition des méthodes.
int Myclass::F2() {
return memvar;
}
void Myclass::set() {
memvar = 99;
}
//====================================================================================
Myclass MyObj;
void setup() {
Serial.begin(115200);
Serial.println("Exécute set... ");
MyObj.set();
Serial.print("Exécute F2, memvar vaut : "); Serial.println( MyObj.F2());
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
}
Mais en réalité la gestion des classes est bien plus complexe que ça (fichiers H - CPP ...)
Je vous conseille de vous documenter sur le web, ce ne sont pas les cours qui manquent.
Très bonne soirée à vous.
PS : pensez à mettre votre moniteur série à 115200.
Merci beaucoup Philippe, il me reste beaucoup a apprendre. Votre code fonctionne très bien, je vais m'affairer a comprendre ou était l'erreur principale.
Serge
Merci du complément de réponse, de votre temps et de votre patience, le lien cité m'apparait très enrichissant, je vais prendre le temps de le consulter attentivement.
Suite a la résolution de mon problème et après avoir complété cet exercice personnel sur les classes et les objets C++ j'ai pensé que la publication du code ci joint pourrais être utile d'autres débutants dans le monde des classes. L'exercice fonctionnel sur Esp32 présente un exemple des cas les plus fréquents dans l'utilisation des objets et classes, voir les commentaires pour les détails.
Désolé si les conventions d'écriture sont quelque peu massacrées.
// Cette démo met démontre l'utilisation d'une méthode de classe
// d'une variable de classe d'une instanciation et de l'utilisation
// d'une variable privée connue seulement des 2 méthodes de la classe.
// Elle montre aussi la methode d'utilisation d'un constructeur sans
// arguments et prouve son appel a l'instantiation d'un objet. Elle a
// été compilée et vérifiée avec l'IDE Arduino 2.2.1 et ESP32 Dev module.
class Myclass
{
public:
Myclass(); // Le constructeur sans arguments
int get(void); // Une méthode
void set(void); // Une méthode
static int clsmethod(int); // Une méthode de classe
static int vardeclass; // Une variable de classe
int ShowInit(void); // Une méthode
private:
int memvar; // Une variable privée
int temp; // Une variable privée
void GetInit(int); // Une méthode privée
};
int Myclass::vardeclass=4567; // Initialisation Var de classe
// Constructeur
Myclass::Myclass(){
temp = 9876;
}
int Myclass::clsmethod(int x){
return x;
}
int Myclass::get(void) {
return memvar;
}
void Myclass::set(void) {
memvar = 678;
}
void Myclass::GetInit(int tmp) {
temp=tmp;
}
int Myclass::ShowInit(void) {
return temp;
}
//==============================================================
void setup() {
// put your setup code here, to run once:
Serial.begin(115600);
delay(3000);
Myclass::clsmethod(1234); // Méthode de classe non instanciee.
Myclass::vardeclass=4321; // Variable de classe non instanciee.
Myclass MyObj; // Constructeur sans arg exécuté
Serial.println("Exécute set ");
MyObj.set(); // Méthode de l'objet MyObj
Serial.println("Exécute get ");
Serial.println(MyObj.get()); // Méthode de l'objet MyObj
Serial.print("Clsmethod Valeur");
Serial.println(Myclass::clsmethod(1234)); // Montre que la méthode de classe fonctionne
Serial.print("vardeclass Valeur");
Serial.println(Myclass::vardeclass); // Montre que la var de classe fonctionne
Serial.println(" Constructeur init OK: ");
Serial.println(MyObj.ShowInit()); // Montre que le constructeur fonctionne
}
void loop() {
// put your main code here, to run repeatedly:
delay(1000);
}