Seite 1 von 8

konkrete Inhaltsfragen

Verfasst: So 26. Okt 2008, 11:54
von Sophia
Mein Problem (noch zu Versuch 1):

Fahrzeug.cpp

int p_iID; // <-

void Fahrzeug::vInitialisierung() //AUFGABE 1.4
{
p_sName=" ";
p_dMaxGeschwindigkeit=0.0;
p_dGesamtStrecke=0.0;
p_dGesamteZeit=0.0;
p_dZeit=0.0;
p_iID++; // <-
}

...

void Fahrzeug::vAusgabe()
{
cout << ... << p_iID << ... // <-
}

Fahrzeug.h

class Fahrzeug
{
public:
...
virtual void vAusgabe(void); // <-
private:
int p_iID;
...
void vInitialisierung(void);
}

Warum erhalte ich folgende Ausgabe in der Tabelle für meine ID?:
ID Name : MaxKmh GesamtStrecke
++++++++++++++++++++++++++++++++++++++++++
-858993459
-858993459
-842150450
-842150450

Ich würde gerne
1
2
3
4
stehen haben.

Re: konkrete Inhaltsfragen

Verfasst: So 26. Okt 2008, 13:16
von Darkmaster
laut aufgabenstellung solltest du p_iMaxID hochzählen.
dazu deklarierst du p_iMaxID als static Variable in deiner .h, und initiallisierst sie in deiner .cpp mit dem wert 0. dies muss allerdings außerhalb des konstrutors geschehen. jetzt kannst du in deiner initiallisierungsfunktion p_iMaxId++; schreiben und p_iID=p_iMaxID;

die aufgabenstellung macht auch mehr sinn, denn p_iID ist vom jeweiligen Objekt der klasse fahrzeug abhängig. wenn du also fahrzeug1.p_iID erhöhst dann nur für dieses objekt, damit stimmt die id-reihenfolge dann allerdings nichtmehr. daher brauchst du ne variable (keine membervariable) die hochzählt.

Re: konkrete Inhaltsfragen

Verfasst: So 26. Okt 2008, 14:25
von testuser
warum benutzt ihr eigentlich nicht die newsgroup? Seit mehr als 3 Jahren werden da alle möglichen Fragen beantwortet, so dass man schon für fast jede erdenkliche Frage dort eine antwort findet.
Ich finde jeder Student sollte in der Lage sein einen Newsreader mit seinem eMail programm einzurichten.

Sonst ist die suche im Google Archiv immer wieder einen Versuch wert.

Re: konkrete Inhaltsfragen

Verfasst: So 26. Okt 2008, 14:37
von Sophia
Ich wollte ja zuerst die newsgroup benutzen;
aber keinen Plan, wie das funktionieren soll:
>Ich finde jeder Student sollte in der Lage sein einen Newsreader mit seinem eMail programm einzurichten.
???

Aber danke für deine Antwort, jetzt klappts so halb.

Re: konkrete Inhaltsfragen

Verfasst: So 26. Okt 2008, 15:15
von testuser
Zum einen finde ich, dass jeder es selber rausfinden sollte, so lernt man mehr. Ich finde es ist nicht alzu schwer unter google zb. newsgroups lesen einzugeben

Zum anderen habe ich ja in meinem vorherigen post einen link zu den google groups hinterlassen, damit auch wirklich jeder die newsgroups durchsuchen und lesen kann.

Re: konkrete Inhaltsfragen

Verfasst: Do 30. Okt 2008, 00:44
von [MD]
Hallo Alle zusammen,

ich habe beim Aufgabenblock_1 noch ein winziges Problem mit den IDs bei dynamisch erzeugten Fahrzeugen (ich könnte das zwar noch anders lösen, aber dann wäre es nicht mehr ganz so flexibel...):

Es wird erst erfragt, wieviele Fahrzeuge erstellt werden sollen, anschließend werden soviele Fahrzeuge angelegt, wie es der Nutzer wünscht. ID 1 und 2 werden den beiden statischen zugewiesen, aber wenn der Benutzer jetzt 3 Fahrzuege erstellt, dann erhalten diese die IDs 6,7 und 8. Es werden 3 GeisterIDs erstellt. Nurweiß ich nicht genau wo, damit ich den Fehler beheben kann...

Code-Dateien im Anhang

Re: konkrete Inhaltsfragen

Verfasst: Do 30. Okt 2008, 09:06
von Christian Bredtmann
Moin.

Code: Alles auswählen

ptArray = new Fahrzeug [iAnzDynFahrzeuge]; 
Hier werden bereits iAnzDynFahrzeuge erzeugt, die alle eine ID bekommen.
Später überschreibst du die bereits erzeugten Fahrzeuge wieder mit neuen
Instanzen und damit auch neuen IDs.

Ich würde empfehlen ein Array von Zeigern auf Fahrzeuge anzulegen und
nicht nur ein Array von Fahrzeugen, da dort wie gesagt automatisch der
Standard ( ;) )-Konstruktor aufgerufen wird.

Sprich:

Code: Alles auswählen

Fahrzeug **ptArray = new Fahrzeug*[iAnzDynFahrzeuge];
// ...
Fahrzeug *ptF = new Fahrzeug();
// ...
ptArray[i] = ptF;
// ...
// Alles wieder löschen: Sowohl die einzelnen Fahrzeuge als auch das dynamisch geholte Array...
 
Ich hoffe du kannst was damit anfangen.

PS: In Aufgabe 2 bekommst du auch eine elegante Lösung mit vector aus der STL an die Hand.
Ob man die in Aufgabe 1 benutzen darf... ;)

Gruß Christian

Re: konkrete Inhaltsfragen

Verfasst: Do 30. Okt 2008, 10:53
von [MD]
Vielen Dank!!

Hatte mir schon gedacht, dass ich in dem Bereich eine doppelte Zuweisung drin habe. Der Tipp mit dem doppelten Pointer war das, wo ich nicht dran gedacht habe und weshalb meine Lösungsansätze gescheitert sind...

Re: konkrete Inhaltsfragen

Verfasst: Do 30. Okt 2008, 17:12
von Jochen
Ich hab auch noch ne ähnliche Frage,

Bei mir klappt das mit den IDs wunderbar und auch das erstellen mit dem new Operator funktioniert.

Ich schaff es aber nicht, ein Auto zu deklarieren ohne den new operator zu benutzen.

so sieht das bei mir aus:

Code: Alles auswählen

Fahrzeug *Auto[NUM_AUTOS];
/../
Auto[0]=new Fahrzeug(iAuto1,50);
Auto[1]=new Fahrzeug(iAuto2,60);
/../
wie kann ich jetzt Auto[2] ein Fahrzeug zuweisen ohne den newoperator zu benutzen?

danke

Re: konkrete Inhaltsfragen

Verfasst: Do 30. Okt 2008, 18:31
von testuser
Versuch mal mit

Code: Alles auswählen

Fahrzeug Auto1(iAuto1, 50);
Auto[0] = &Auto1;
Falls du weitere Fragen hast, versuch die doch in der Newsgroup rwth.elektrotechnik.ai2 zu stellen. In dieser Gruppe werden die Fragen auch von den Praktikumsbetreuern kompetent beantwortet. Auf die Gruppe kann z.B. aus dem service-portal zugegriffen werden. http://service.eecs.rwth-aachen.de/main/pi2