Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Stuct und Vektor Frage

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
12.10.2005, 10:54 Uhr
NeedOne



Hallo!
Ich habe eine Frage zu einem Codeabschnitt der als Übungscode bereit gestellt wurde:


C++:
struct Datum{int t; int m;int j;};
struct KirchenDaten {
Datum gebTag;
Datum todTag;
Datum hochTag;
};

typedef string Text;
struct Person {
Text namen[3];
KirchenDaten* pkirch;
int plz;
Text ort;
};

Text ErmVorname(const Person& p);



Meine Frage ist nun wie mit Person er; das Geburtsdatum ändern kann. Eine zweite Frage wäre wie ich das mache wenn die Person ein Zeiger ist also sowas wie Person* psie;

Danke für die Hilfe!

Dieser Post wurde am 12.10.2005 um 10:55 Uhr von NeedOne editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
12.10.2005, 11:27 Uhr
ao

(Operator)



C++:
er.pkirch->gebTag.t = 29;
er.pkirch->gebTag.m = 2;
er.pkirch->gebTag.t = 1970;



Vorher muss natürlich mit

C++:
er.pkirch = new KirchenDaten;

Speicher dafür geholt worden sein. Und am Schluss das

C++:
delete er.pkirch;

nicht vergessen. Für psie gilt entsprechend:

C++:
psie->pkirch->.....


ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
12.10.2005, 11:30 Uhr
ao

(Operator)


Ich sehe übrigens keinen einleuchtenden Grund, weshalb in Person die Kirchendaten verpointert sind.

C++:
struct Person {
Text namen[3];
KirchenDaten kirch;
int plz;
Text ort;
};

wäre meiner Meinung nach viel sinnvoller, weil weniger fehlerträchtig.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
12.10.2005, 11:54 Uhr
NeedOne



Vielen Dank! Das hat mir sehr geholfen!

Die Pointer dienen nur zur Übung. Das hier ist nichts als eine Übungsaufgabe um als Java Kopf die C Syntax in den Kopf zu bekommen.

Dieser Post wurde am 12.10.2005 um 11:57 Uhr von NeedOne editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
12.10.2005, 12:52 Uhr
NeedOne



noch eine Frage zu dem Thema. Wie kann ich über psie etwas in namen[] schreiben und danach wieder abrufen?

Schlicht

C++:
Person* psie;
psie->namen[0] = "irgendwas";
cout << psie->namen[0] << endl;



funktioniert nicht

Dieser Post wurde am 12.10.2005 um 12:54 Uhr von NeedOne editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
12.10.2005, 13:23 Uhr
ao

(Operator)



Zitat von NeedOne:
Schlicht

C++:
Person* psie;
psie->namen[0] = "irgendwas";
cout << psie->namen[0] << endl;



funktioniert nicht

Weil psie ein sog. "wilder Pointer" ist, der nicht auf gültigen Speicher zeigt.

C++:
Person* psie = new Person;
psie->namen[0] = "irgendwas";
cout << psie->namen[0] << endl;


sollte klappen.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
12.10.2005, 13:30 Uhr
NeedOne




Zitat von ao:

Weil psie ein sog. "wilder Pointer" ist, der nicht auf gültigen Speicher zeigt.

C++:
Person* psie = new Person;
psie->namen[0] = "irgendwas";
cout << psie->namen[0] << endl;


sollte klappen.
ao


das mit = new Person; dachte ich mir auch schon, aber dann kommt beim ausführen ein Windows Fehler "Die Funktion read konnte im Speicher nicht ausgeführt werden".
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
12.10.2005, 14:41 Uhr
ao

(Operator)


Öhm, also bei mir funzt das hier gut:

C++:
#include <string>
#include <iostream>

struct Datum {int t; int m;int j;};

struct KirchenDaten {
    Datum gebTag;
    Datum todTag;
    Datum hochTag;
};

typedef std::string Text;

struct Person {
    Text namen[3];
    KirchenDaten* pkirch;
    int plz;
    Text ort;
};


int main(int argc, char* argv[])
{
    Person* psie = new Person;
    psie->namen[0] = "irgendwas";
    std::cout << psie->namen[0] << std::endl;
    return 0;
}

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
12.10.2005, 14:52 Uhr
NeedOne



ich Depp hab das Array mit einem Eintrag [3] belegt, es geht aber natürlich nur von 0-2. Sorry
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: