in Objekt direkt einen globalen array verwenden, ohne ihn intern zu kopieren?
hallo,
in https://www.roboternetz.de/community...608#post648608
war ja das Problem gelöst, wie man externe Listen von cstrings einlesen/übergeben kann, und diese dann intern in eine objekteigene (per new neu erzeugte) Liste kopiert und weiter verändert werden können.
Das kostet ntl doppelten Speicher, einmal für alle globalen Muster, und dann für alle einzelnen Objektinstanzen intern noch einmal.
Daher die Idee: kann man im Objekt direkt einen globalen array verwenden, ohne ihn intern zu kopieren und ohne new (per Pointer oder als Referenz, verwendbar weiterhin als public list)?
Code:
class tMenu {
public:
char ** list;
tMenu (int16_t menulen, int16_t linelen, char ** extlist, tMenu* pMenu) : // constructor
MENULEN(5), LINELEN(11), VISLNUM(5), FONTHI(13), act(0)
{
MENULEN = menulen; // number of available menu options
LINELEN = linelen; // line length of menu options
preMenu = pMenu; // predesessor menu
list = extlist; // ??????? ohne new ?????? <<<<<<<
}
}
char * mlist0[11] = {"Titel 0","Zeile1","zu menu02>","Zeile3","Zeile4","Zeile5"};
tMenu menu0(6,11, (char**)mlist0, &menu0); // numEntries, lineLength, preMenu (N/A);
char * mlist02[11] = {"Titel 02","ESC>","Zeile2","Zeile3","zu menu024"};
tMenu menu02(5,11, (char**)mlist02, &menu0); // numEntries, lineLength, preMenu=menu0;
char * mlist024[11] = {"Titel 024","ESC >","Ja","Nein","foo","bas"};
tMenu menu024(6,11, (char**)mlist024, &menu02); // numEntries, lineLength, preMenu=menu02;