Et bien...
Ça fonctionne !
En fait, c'est un problème de pointeur. J'ai fini par me poser la question, est-ce que j'affecte le pointeur avec le bon endroit ? Et la réponse était pire, le pointeur n'étais tout simplement pas rempli. Rien à voir avec la classe exa... Bref !
Je met la solution au cas ou ça en intéresserais d'autres :
Donc, mon main, réduit pour les tests :
#include <LiquidCrystal.h>
#include "menuLCD.h" //Le chemin de ma classe qui héritera de l'objet lcd
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
MenuLCD menuUser(lcd); //Ici, nous instancions la classe MenuLCD avec l'objet lcd passé en paramètre pointeur
void setup () {
Serial.begin(9600);
Serial.flush();
lcd.begin(16, 2); //Utilisation de la classe LiquidChristal ou de exa.. Nombre de colonnes 16, nombre de ligne 2
menuUser.getTest(); //ici, nous affichons le contenu de getTest() qui fera appel à l'objet passé en paramètre
}
void loop() {
//Vide pour les essais !
}
Voyons, donc le .h de ma classe:
#ifndef menuLCD_h
#define menuLCD_h
#include <LiquidCrystal.h> //La librairie parente pour laquelle nous cherchons à utiliser ses membres
class MenuLCD
{
public :
MenuLCD(LiquidCrystal &lcd); //Constructeur avec passage en paramètre de l'objet au travers d'un pointeur
void getTest(void);
private :
LiquidCrystal *_lcd; //L'instanciation de la classe liquidCrystal avec comme paramètres, ceux de l'objet pointé
};
La différence était ici... dans la partie private ! mais pas que...
Voyons donc le .cpp
#include "menuLCD.h"
MenuLCD::MenuLCD(LiquidCrystal &lcd) //Passage en paramètre de l'objet
{
_lcd = &lcd; //Nous remplissons le pointeur avec l'objet pointé
}
void MenuLCD::getTest(void)
{
_lcd->clear(); //Autre subtilité, nous ne passons plus par un "." mais par "->"... Car on fait référence à l'objet pointé
_lcd->setCursor(0,0); //Colonne, Ligne
_lcd->print("Hello world");
}
Bien entendu, ça fonctionne parfaitement !
Je peux donc clore ce tread...