Structurfeld in Klasse verwenden??



  • Wie kann ich ein Strukturfeld in einer Klasse verwenden?
    So geht nicht:

    class VarTable
    {
    private:
     struct table
     {
     string name;
     int wert;
     int ReturnVar(string &str){if(name==str)return wert;else return 0;} //gibt wert für gesuchten String zurueck
     };
     table* tbl;
     int Index;
    public:
     VarTable(){tbl=new table[1024];Index=-1;} //1024 structuren erzeugen
     ~VarTable(){delete[] tbl;}
     void SetVar(string nname,int wwert)      //werte in narchsten struktur schreiben
     {
      Index=Index+1;
      tbl[Index]->name=nname;        //<--------hier kommt fehler....
      tbl[Index]->wert=wwert;
     }
     int GetVar(string name)              //Wert für gesuchten Name ausgeben
     {
      int x = tbl->ReturnVar(name);
      return x;
     }
    };
    int main(int argc, char* argv[])
    {
    VarTable* table=new VarTable;
    table->SetVar("test",12);
    table->SetVar("test2",13);
    int y=table->GetVar("test");
    int x=table->GetVar("test2");
    cout<<y<<endl;
    cout<<x<<endl;
    getch();        return 0;
    }
    

    Fehler:
    Zeiger auf Struktur auf linker Seite von -> oder ->* erforderlich*

    oder wie kann ich noch eine Klasse relisiren, wo max 1024 werte mit name gespeichert werden?

    (Bite keine vectoren oder so,so weit bin ich noch nicht)!



  • tbl[Index].name=nname;



  • versteh ich nich!
    Kannst mir das mal erklären?
    Hab doch dynamisch erzeugt!
    Is dann nicht ->?



  • arrays in C/C++ sind verkappte zeiger. Deshalb kann man ohne Probleme einem Pointer ein Array zuweisen. Beim indexieren über einen Pointer passiert dasselbe wie bei einem Array: man greift direkt auf den Wert zu.


Anmelden zum Antworten