Brauche Hilfe
-
Hi Leute
hab grad bissel programmier komme jetzt aber nicht weiter.
#include <iostream.h> #include <conio.h> class Fahrzeug { private: char Fahrzeugmarke[20]; int Tankinhalt; int Verbrauch; float Reichweite[3]; public: char* getFahrzeugmarke(void); void setFahrzeugmarke(char[]); int getTankinhalt(void); void setTankinhalt(int); int getVerbrauch(void); void setVerbrauch(int); float* getReichweite(void); void setReichweite(void); Fahrzeug(char[], int, int); ~Fahrzeug(); }; char* Fahrzeug::getFahrzeugmarke(void) { return Fahrzeugmarke; } void Fahrzeug::setFahrzeugmarke(char F[]) { int i=0; while(F[i]!='\0') { Fahrzeugmarke[i]=F[i]; i++; } Fahrzeugmarke[strlen(F)]='\0'; } int Fahrzeug::getTankinhalt(void) { return Tankinhalt; } void Fahrzeug::setTankinhalt(int T) { Tankinhalt=T; } int Fahrzeug::getVerbrauch(void) { return Verbrauch; } void Fahrzeug::setVerbrauch(int V) { Verbrauch=V; } float* Fahrzeug::getReichweite(void) { return Reichweite; } void Fahrzeug::setReichweite(void) { Reichweite[0]=Tankinhalt/Verbrauch*100; Reichweite[1]=Tankinhalt/(Verbrauch+2)*100; Reichweite[2]=Tankinhalt/(Verbrauch-2)*100; } Fahrzeug::Fahrzeug(char F[], int T, int V) { setFahrzeugmarke(F); setTankinhalt(T); setVerbrauch(V); } Fahrzeug::~Fahrzeug() { } int main() { Fahrzeug F1("Audi", 40, 8); cout<<F1.getFahrzeugmarke()<<endl; cout<<F1.getTankinhalt()<<endl; cout<<F1.getVerbrauch()<<endl; for(int i=0; i<=2; i++) { } getch(); return 0; }Wie kann ich jetzt die Reichweite ausgeben?
-
float* bla = F1.GetRecihweite(); cout<<bla[i]; delete bla;[Edit] hab gesehen das reichweite Array ist...
wollte noch meckern, warum du nen Zeiger auf float zurückgibst bei reichweite!
-
jo danke schön
aber irgendwie liefert er mir komische ergebnisse
-
bla1 schrieb:
aber irgendwie liefert er mir komische ergebnisse
Na dann lach doch

Im Ernst, eine etwas genauere Beschreibung könntest du schon liefern, oder?
"Irgendwie komische Ergebnisse" ist ungefähr so informativ wie "Brauche Hilfe" als Titel.
-
Wieso wird der Pointer geloescht?
delete bla;Ich meine wenn es schon ein Array ist, dann delete[], aber das hier ist doch kein dynamisches. Die Speicherverwaltung bleibt doch in der Klasse. Ausserdem sollte man eigentlich einen Pointer auf etwas konstantes zurueckliefern.
Gruss,
DeSoVoDaMu
-
setReichweite(void) wird in deinem Programm nie aufgerufen. Daher ist das array Reichweite nicht initialisiert -> komische Werte.
Kurt
-
ZuK schrieb:
setReichweite(void) wird in deinem Programm nie aufgerufen. Daher ist das array Reichweite nicht initialisiert -> komische Werte.
Kurtund was löscht das delete demnach? ^^
-
roan312 schrieb:
und was löscht das delete demnach? ^^
Welches delete in dem Programm gibt's kein delete. Wird auch keines gebraucht.
Kurt
-
In der Verbesserung von ser1al schon.
ser1al schrieb:
float* bla = F1.GetRecihweite(); cout<<bla[i]; delete bla;[Edit] hab gesehen das reichweite Array ist...
wollte noch meckern, warum du nen Zeiger auf float zurückgibst bei reichweite!
-
Das delete bla; ist keine Verbesserung sondern einfach falsch.
Kurt
-
Hallo ZuK
du hast mir ja schon einmal geholfen. Kannst du mir bitte deine ICQ-Nummer geben.
-
Tut mir leid habe keine ICQ-Nummer. ( weiss nicht mal was dass sein sollte )

Bin eben ziemlich altmodisch. ( Baujahr 60 )
Kurt
-
hmm...schade
wieso altmodisch?...naja...dafür bist du aber anscheinend einer der besten hier in sachen c++

-
Denke das hat überhaupt nichts mit gut oder schlecht zu tun.
Habe die meisten Fehler über die in diesem Forum diskutiert wird irgendwann selbst gemacht.
Zu meiner Zeit ( dh. bevor jedermann einen Internetzugang hatte ) musste man auf die meisten Probleme selbst eine Antwort finden.
Das ist "learning the hard way", aber zumindest bei mir ist es so dass wenn ich die Lösung eines Problems selbst gefunden habe dann vergesse ich sie auch nicht mehr.
Kurt
-
yup zuk sorry hast recht!
Is nur angewonheit, wenn ich nen pointer mache, das wieder mit delete zu löschen, merke den fehler auch imemr erst etwas später....!