man kann eine
char ** mlist;
ja nicht initialisieren als
{"Titel","ESC","Ja","Nein","foo","bas"}; // error !!
Das ist aber wesentlich, sonst wird es bei der Initialisierung aller Menüpunkte aller Menüs und Untermenüs zu kompliziert.
also brauche ich für den Original-Array
char mlist[6][11] = {"Titel","ESC","Ja","Nein","foo","bas"};
und den will ich jetzt an die Funktion
tMenu::import() // (fraglich ob hier als Argument (char ** extlist) richtig ist ?!? )
übergeben,
denn man kann als Funktions-Argument kein
import(char extlist[MENULEN][LINELEN])
definieren, zumal MENULEN und LINELEN grundsätzlich in der Class variabel sind und keine Konstanten (ihre Größe wird erst bei Instanziierung des Objekts bekannt gegeben, wenn die interne list erzeugt wird)
habe ich es erst mal übergeben, kann ich die Liste von strings in der Objekt-Methode weiterverwenden:Code:public: char ** list; tMenu (int16_t menulen, int16_t linelen, tMenu* pMenu) { // constructor MENULEN = menulen; LINELEN = linelen; list = new char*[MENULEN]; for(int i = 0; i < MENULEN; i++) { list[i] = new char[LINELEN+1]; }
for(int line=0; line<MENULEN; line++) {
strncpy( list[line], extlist[line], strlen( list[line] ) );
...
Offenbar ist das für die Übergabe mit den ** falsch, aber wie geht es richtig?
Wie übergibt man einen 2-dim array (bzw. eine Aufzählung von cstrings) per Pointer oder als Kopie an einen zweiten 2-dim array?







Zitieren

Lesezeichen