Klassen und irgendwie speichern...
-
Hallo,
In der Regel speichert man per Index und nicht per Variablenname...
MFG winexec*
-
ich habe zwar nicht so wirklich die ahnung, aber wir hatten sowas ähnliches schon mal in der schule geschrieben für eine datenbank...aber ich könnte das ganze prog nicht ganz genau erklären, da wir es wie gesagt seid 3 wochen machen...:((((((( war nur das projekt was ich wählte, da ich eine ähnliche vorlasge hatte und so umschrieb.....
auf jeden fall ist es für ne datenbank und der erste teil nur...ich hoffe ich bekomme das mit dem code hier im forum hin...???
der folgende aus der header und der danach aus der main...:
/********************************************************************/ /*** m_a_e_x_x input / add ***/ /********************************************************************/ MA input (MA man) { char str[40]; int bed2, x, y; fflush(stdin); x=2; y=2; gotoxy(x+2,y+ 2); printf("\n < 1 > ---> ADD "); gotoxy(x+6,y+ 4); printf("\n Check the name: "); gotoxy(x+10,y+ 6); printf("\t\t name: "); gets(str); bed2=1; while (!feof(h)) { man=read(man); if (strcmp(str,man.name)==0) { bed2=0; } } if (bed2!=0) { printf("\n Please insert the stats: \n\n"); printf("\n\t\t name: "); scanf("%s",&man.name); printf("\n\t\t kind: "); scanf("%s",&man.kind); printf("\n\t\t amount: "); scanf("%d",&man.amount); printf("\n\t\t country: "); scanf("%s",&man.country); } if (bed2==0) { printf("\n Sorry, the name exist!"); getch(); } return man; } /********************************************************************/ /*** m_a_e_x_x write ***/ /********************************************************************/ void write (MA man) { fwrite(&man,gLMA,1,h); }aus der main...:
/*************************************************** write */ case '1' : clrscr(); masterdesign1 do { clrscr(); masterdesign2 h=fopen(DB,"r"); man=input(man); fclose(h); h=fopen(DB,"a"); write(man); fclose(h); printf("\n\n Continue? y/n"); } while ( getch() != 'n'); break;
-
So bitte nicht! Das ist kein C++, sondern finsterstes C. Der Tipp von MFK dürfte relevant für dich sein, wobei man bei einem Adressbuch vielleicht auch über eine std::map oder std::multimap nachdenken könnte.
-
Oh oh, das geht nun garnicht!
Bevor der Fragesteller in falsche soziale C-Ecken abdriftet ;), hier mein Tip:
class Adressbuch { std::vector<Person> personen; // Container für mehrere Personen public: newEntry(); // wie gehabt! showAll(); };Gut, jetzt mal eine kleine Änderung:
void Adressbuch::newEntry(){ cout << "Name eingeben: "; cin >> name; cout << "Vorname eingeben: "; cin >> vorname; Person diesePerson(name,vorname); // einfach die Person zum Container hinzufügen: personen.push_back(diesePerson); } void Adressbuch::showAll() { for(std::size_t i=0; i < personen.size(); i++) cout << personen[i].name << ", " << personen[i].vorname << endl; }So, ich hoffe ich konnte eine größere Katastrophe noch abwenden.

-
Z2 schrieb:
So bitte nicht! Das ist kein C++, sondern finsterstes C. Der Tipp von MFK dürfte relevant für dich sein, wobei man bei einem Adressbuch vielleicht auch über eine std::map oder std::multimap nachdenken könnte.
Ja, das wäre der nächste Schritt, wenn man erstmal weiß was überhaupt Container sind. Vector sollte man erstmal verstehen, was der Fragesteller anscheinend noch nicht kennt. Aber map/multimap wäre natürlich am Ende die bessere Lösung.
-
Vielen Dank für alle Hilfe. Habe mich jetzt doch für die Verwendung einer Datenbank entschieden.
-
Ich glaube unser Fragesteller hat das Problem, dass er nur die Variante kennt ein Objekt mit einem Namen (eigentlich Bezeichner) zu erstellen:
lomtas schrieb:
Ich kann ja nicht jedes Objekt von Person diesePerson nennen. Dann würde ich es ja immer überschreiben. Also irgendeinen Namen muss das Kinde ja bekommen, oder?
Also so
Objekt_Typ Mein_Objekt_Name();Aber du musst nicht unbedingt einen Bezeichner für ein Objekt haben. Wichtig ist nur, dass du in irgend einer Art den Zugriff auf diese Objekte behältst.
Wenn du beispielsweise eine Reihe von Objekten in einer Schleife erzeugst:
for(int i=0; i<10; i++) { Objekt_Typ Mein_Objekt_Name(); }verlierst du den Zugriff auf diese Objekte. Daher musst du diese Objekte irgendwo ablegen. Und das machst du am Besten so, wie Artchi das gezeigt hat.
-
lomtas schrieb:
...Habe mich jetzt doch für die Verwendung einer Datenbank entschieden.
Das ist schonmal eine gute Idee !!
Aber es nimmt Dir auch nicht alle Probleme ab, weil Du ja immer noch das Eine oder Andere drum herum programmieren musst.
Wenn Du also dann nochmal Konkretes hast: Frag einfach wieder an.
Gruß,
Simon2.
-
Komisch, nicht wissen wie man Objekte dynamisch anlegt, aber eine DB verwenden wollen.

-
Mit Datenbanken kenne ich mich bestens aus (Fachgebiet PHP & MySQL), nur wie man diese in C++ einsetzt wird kompliziert... Aber da bin ich ja gerade am entwickeln: http://www.c-plusplus.net/forum/viewtopic-var-t-is-160732-and-highlight-is-.html
-
lomtas schrieb:
...nur wie man diese in C++ einsetzt wird kompliziert...
Dabei ist das erst der Punkt, an dem die ganze Sache spannend und interessant wird. Daten lesen und ablegen, ist Fingerübung, aber etwas damit zu machen, Abläufe zu entwirren, Fehlersituationen zu bedenken, ... DA beginnt der Spaß beim Programmieren.

Gruß,
Simon2.