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.