Zweidimensionalles Array mit Zeigern oder Strings



  • Hi, ich habe folgendes vor:

    Ich bräuchte ein zweidimensionales Array, in dem nicht normale Werte (int o.ä.) gespeichert werden, sondern am besten Strings (falls dies möglich ist). Eine weitere Möglichkeit wäre es, in dem Array Zeiger auf Funktionen abzulegen (falls möglich).

    Hintergrund ist folgender: Das zweidimensionale Array wird als Matrix benutzt, in der für verschiedene Zustände eines Systems die weitere Vorgehensweise des Programms stehen soll. Das ganze wird eine Steuersoftware für ein Zustandssystem. Die Matrix ist also eine Matrix aller möglichen Zustände und die Werte in der Matrix sollen verschiedene Unterprogramme starten, bzw. einen bestimmten String zurückgeben.

    Na, hat da jemand ne Idee....



  • Strings in nem Array ist nicht zu empfehlen, sinnvoller ist es wenn du Zeiger auf Strings speicherst. Mit den Funktionszeigern, dass sollte auch gehen.
    Aber wolltest du:
    a) jedem String eine Funktion zuweisen (sähe nach Parser aus, wäre bei vielen Strings, aber besser durch Hashs oder Baumstrukturen zu lösen), oder
    b) einem Index einen String oder eine Funktion oder
    c) vielleicht beides [einem Index einen String und eine Funktion]?

    Der typ für einen Funktionszeiger ist:
    void*
    für Zeiger auf Strings (meist 0-Terminierte):
    char* 😃

    mfg
    -bg-



  • Das Beste wäre es, wenn ich von jeder Stelle der Matrix aus ein Unterprogramm starten könnte. Ich müsste also jeden Index (also jeder Stelle in der Matrix) einen Zeiger auf die entsprechende Funktion zuordnen können. Zusätzlich muss ich aber noch die Möglichkeit haben bestimmte Stellen der Matrix mit "0" zu initialisieren, so dass in diesen Fällen kein UP gestartet wird. Allerdings sollte das eigentlich kein Problem sein.

    Erreichen will ich folgendes: Die Eingangsvariablen meines Systems (hier z.B.: x,y) bestimmen die Stelle in der Matrix. Der Zeiger wird dann ausgelesen und das entsprechende (Unter-)programm wird gestartet. Steht in der Matrix der Wert "0" passiert nichts. Die Eingangsvariablen bestehen zum Einen aus einen int-Wert für den Zustand in dem sich das System gerade befindet, zum Zweiten aus einer Tasteneingabe (realisiert über einen speziellen Tastaturcontroller). Damit ergibt sich bei jeder Tasteneingabe abhängig vom Zustand des Systems eine andere Funktion die ausgeführt werden soll.

    Gibt es vielleicht ein Tutorial oder nen Schnipsel Quellcode, der ein Array mit Zeigern auf Funktionen beschreibt...



  • musste das mit den Zeigern auf Funktionen auch noch mal nachgucken :),
    entweder einfach googeln mit z.B. "Zeiger auf Funktionen", habe dabei z.B. das gefunden: http://www.rtr.tu-darmstadt.de/cppkurs/11_2_6Zeiger_Funktionen.html

    Dein Code könnte dann so aussehen:

    //Deklaration
    *void() ref_table[X_LIMIT][Y_LIMIT];
    
    //referenzfunktion
    void referenc (int x, int y) [edit]do war ein Schlüsselwort, sorry[/edit]
    {
     if (ref_table[x][y])
      ref_table[x][y]();
    }
    

    habs noch nicht getestet!!!

    mfg
    -bg-

    [ Dieser Beitrag wurde am 08.01.2003 um 17:22 Uhr von -bg- editiert. ]


Anmelden zum Antworten