[RISOLTO]Problema con classe derivata.

Buongiorno a tutti. Vi espongo il mio problema.

Sto cercando di programmare il mio Arduino UNO di modo che sia visualizzabile e navigabile un piccolo menu a scorrimento su uno schermo LCD 16x2. Il mio approccio al problema è stato quello di creare una classe List che si occupa di gestire un array di stringhe di dimensione fissa, che sarebbero le varie voci del menu. In seguito ho creato una classe Menu che estende la classe Lista aggiungendo un cursore (variabile di tipo int), utile a stabilire quale punto dell’array di stringhe contenuto negli oggetti di tipo List deve essere visualizzato sullo schermo.

Ho proceduto a scrivere il codice della classe List in questo modo:

#ifndef __List_h__
#define __List_h__

#include "Arduino.h"

class List{
	public: 
		List(String* list, int nElements);
		String getListItem(int index);
		void setListItem(String item, int index);
	private:
		String* _list;	
};

#endif

List.h

#include "Arduino.h"
#include "List.h"

List::List(String* list, int nElements){
	int i;
	
	_list = malloc(sizeof(String) * nElements);
	
	for(i=0;i<nElements;i++){
		_list[i]=list[i];
	}
}

String List::getListItem(int index){
	return _list[index];
}

void List::setListItem(String item, int index){
	_list[index] = item;
}

List.cpp

Per fare una prova ho creato inizialmente un oggetto List passando come parametro del costruttore l’array:

String mainList[] = {"List", "Create", "Delete", ""};

Per testare il funzionamento della classe ho fatto stampare nella sezione loop() l’elemento x dell’oggetto List con:

lcd.print(list.getListItem(x));

Fin qui tutto bene, sullo schermo vengono visualizzate le informazioni corrette. Il problema nasce quando vado ad estendere la classe con la classe derivata Menu, di cui di seguito il codice:

#ifndef __Menu_h__
#define __Menu_h__

#include "Arduino.h"
#include <List.h>

class Menu : public List{
public:
	Menu(String* list, int nElements) : List(list, nElements){};
	int cursor = 0;
};

#endif

In seguito a questa aggiunta istanzio nel mio file .ino l’oggetto mainMenu con:

String mainList[] = {"List", "Create", "Delete", ""};
Menu* mainMenu = new Menu(mainList, 4);

In seguito ho definito, in un altro file MenuNavigator.h una funzione che visualizza sullo schermo le due righe a cui si riferisce il cursor presente in Menu.cursor:

#ifndef __MenuNavigator_h__
#define __MenuNavigator_h__

void showList(Menu* menu, LiquidCrystal lcdDevice){
	lcdDevice.clear();
	lcdDevice.setCursor(0, 0);
	lcdDevice.print(menu->getListItem(menu->cursor));
	lcdDevice.setCursor(0, 1);
	lcdDevice.print(menu->getListItem(menu->cursor + 1));
}

#endif

Compilo, non mi da nessun errore e nessun warning, ma tuttavia non appare nulla sullo schermo. In realtà non sono molto pratico della gestione delle classi in questo linguaggio, in quanto vado più forte sul Java, però non riesco davvero a capire quale possa essere il problema, dal momento che quando cerco di stampare un valore direttamente dall’oggetto di tipo List fila tutto liscio.
Grazie in anticipo a chiunque vorrà aiutarmi.

Risolto!
Sbagliavo a definire il membro della classe base _list come private invece di protected!