[RESOLU][C++] Inclusion d'objet dans un autre avec paramètres

Hello la commu :slight_smile:

Je rencontre un souci que j’avais eu il y a longtemps mais impossible de me rappeler comment faire ni retrouver la solution :-/

En gros, j’ai un fichier .h:
#include <LiquidCrystal_I2C.h>

class truc {
private:
LiquidCrystal_I2C lcd(0x27,20,4);
};


Mais voilà, dans un .h on peut pas déclarer de variables comme cela...

Et je sais plus comment faire :-s

Bonjour,

Tu peux déclarer un pointeur sur ta classe LiquidCrystal_I2C et l'instancier dans le constructeur

class truc {
  public:
    truc() {pLcd = new LiquidCrystal_I2C(0x27, 20, 4);}
  private:
    LiquidCrystal_I2C *pLcd;
};

Tu peux aussi le déclarer static

class truc {
  private:
    static LiquidCrystal_I2C lcd;
};

et l'instancier dans le .cpp

LiquidCrystal_I2C truc::lcd(0x27,20,4);

Ca présente l'avantage de partager la même instance de l'afficheur entre toutes les instances de truc.

La même chose sans pointeur, ce qui permet d’appeler les méthodes de l’objet comme ceci :

lcd.method();

au lieu de

lcd->method();

Si l’objet lcd est appelé à être détruit à un moment donné, préférer le pointeur, sinon préférer cette solution, sans allocation dynamique.

#include <LiquidCrystal_I2C.h>

class truc {
  private:
    LiquidCrystal_I2C lcd;
  public:
    truc(void);
};

truc::truc(void) :
lcd(0x27, 20, 4)
{
  
}

Oui, c'est aussi une bonne solution à laquelle je n'avais pas pensé.

Super ! Merci pour les réponses les gars ;) C'est pas un truc qu'on fait tous les jours (du moins pour ma part ^^) Je vais modifier mon code avec vos exemples :)

Big kisses :p

L'objet statique est valable aussi, car si tu crées plusieurs objets de la classe truc, l'avantage est que l'objet LCD reste unique.

Comme c'est un objet lié à du hardware, il est rare d'en instancier plusieurs, et pour cause. Les LCD ne se multiplient pas tout seuls comme les octets.

Donc, statique ça va bien pour ça.

En l'occurence dans mon projet, il y aura au max deux lcd (config par cavalier sur le PCB) :)

Donc tu ne peux pas mettre la définition du lcd avec ses paramètres dans la classe. Il faut forcément passer l'adresse en paramètre.

Je pensais aussi, mais comment faire >_<

Trouvé ^^ Bête mais je cherchais depuis vos soluces, et y a un ";" qui a sauté dans le fichier qui était lu par le compilateur juste avant mon lcd.h......

Comme quoi des fois ça tient pas à grand chose les conneries ^^

Merci encore :) !!!!!