Hi.
Bin mal wieder daran mein Menü für mein LCD zu programmieren.
Vorweg alles läuft soweit. Nur irgendwie hat mich jetzt der ehrgeiz gepackt das Menü etwas flexibler zu gestalten.
Also folgendes Problem:
#include <Menu.h>
#define _LANG_MENU_luefter "Luefter"
#define _LANG_MENU_luefter_automatik "Automatik"
#define _LANG_MENU_luefter_automatik_temperatur "Temperatur"
#define _LANG_MENU_luefter_automatik_auswahl "Auswahl"
....
// Menü Objektstruktur anlegen
Menu Item1 (_LANG_MENU_luefter);
Menu Item11 (_LANG_MENU_luefter_automatik);
Menu Item111 (_LANG_MENU_luefter_automatik_temperatur);
Menu Item112 (_LANG_MENU_luefter_automatik_auswahl);
......
void CONTROL_menu_init()
{
lcd_menu.addChild(Item1);
lcd_menu.addChild(Item2);
lcd_menu.addChild(Item3);
Item1.addChild(Item11);
Item1.addChild(Item12);
....
}
Mein Problem besteht jetzt darin, dass ich z.B. in einem Untermenü 6 Lüfter habe und möchte nun das der User die Anzahl verringern kann.
Habe also in den "Einstellungen" eine Funktion geschrieben, in der ich die Anzahl abfrage.
Jetzt ist das Problem, dass die menu.h nur addchild Funktionen hat und keine remove/deletechild.
Da ich es ehrlich gesagt auch schon immer sehr strubbelig fand mit den Pointern ( ich verstehe das Grundprinzip von Adresse/Pointer und co) habe ich mir gedacht, lass die Finger da weg es muss doch einfacher gehen.
Hatte also die Idee einfach im Nachhinein das Objekt einfach zu löschen, da ich ja für jedes child ein neues Objekt anlege. Wieder hinzufügen könnte ich dann ja wieder per addchild() machen.
Das Problem ist nur ich kriege zum verrecken nicht das Objekt gelöscht um zu ob es so überhaupt funktioniert.
Hatte es schon versucht mit:
delete Item1;
Ergebnis:
aktuell:1757: error: type 'class Menu' argument given to 'delete', expected pointer
Interpretiere ich einfach mal so, dass er über delete keine Objekte löschen kann sondern nur Pointer!? Wenn ja, könnte ich ja die Pointer löschen die auf mein child zeigen, welches ich löschen will, wenn die nicht vorhanden sind, kann ja an sich auch nichts angezeigt werden. Ist mir ja an sich egal ob das Objekt dann noch da ist oder nicht.
Sollte das mit den Pointern, hat jemand eine Ahnung wie genau dann der Befehl dafür aussieht, da hörts dann bei mir wieder auf.
Hatte es schon versucht mit:
~ Item1;
Ergebnis:
aktuell:1757: error: no match for 'operator~' in '~Item1'
Irgendwie hatte ich im hinterkopf, dass man mit ~ Objekte löschen kann.
Vielen Dank für Hilfe oder Tipps!
Gruß
Kevin
Einen Fehler habe ich gerade gesehen, ich darf nicht mit Item1 oder so arbeiten, da die durch die Erstellung umbenannt wurden.