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)
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];
}
habe ich es erst mal übergeben, kann ich die Liste von strings in der Objekt-Methode weiterverwenden:
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?
Lesezeichen