[Resolu] Menu (Menu Backend fortement modifié) et PROGMEM (F)

Ton problème vient que tu ne peut pas appeller un constructeur comme une simple fonction membre.
Un constructeur va forcément créé un nouvel objet.
Quand dans le 2eme constructeur tu appelles le 3eme, tu crée donc un nouvel objet qui n'est pas mémorisé au lieu d'appliquer les instructions a l'objet courant.
Le bon code serait plutot :

 MenuItem( void)
  {
    _init(NULL, NULL);
  }

  MenuItem( __FlashStringHelper *itemName)
  {
    _init(itemName, NULL);
  }

  MenuItem( __FlashStringHelper* itemName, void (*pt2Func) )
  {
    _init(itemName, pt2func);
  }

protected:
  _init( __FlashStringHelper* itemName, void (*pt2Func) )
  {
    ..... code d'init
  }

Mais le plus simple dans ce cas précis est d'utiliser les paramètres par défaut avec un seul constructeur ;

 MenuItem( __FlashStringHelper* itemName = NULL, void (*pt2Func) = NULL )
{
   ... code d'init
}

Cela permet de prendre par defaut la valeur NULL pour les paramètres non spécifiés.

Maintenant je ne vois pas pourquoi ca ne marche que dans une fonction. Mais je ne connais pas la macro F(). J'utilise plutot PSTR().
Où est déclarée F() que je regarde comment elle est codée ?