Problem mit delete [] schon wieder.
-
wiso funktioniert dieser destruktor nicht?.
class BasicSPKnote //K gia K -Devoler ;) { //friendly friend ostream &operator<<(ostream &output, const BasicSPKnote &d); public: //Administrativ //Konstruktor BasicSPKnote(short int FlightNumber = 0, char *ArrivalAirport = '\0', char *DestinationAirport = '\0', DATE ArrivalDate = NULL, TIME ArrivalTime = NULL, DATE DestinationDate = NULL, TIME DestinationTime = NULL); //De -Contruktor ~BasicSPKnote(); //SetFunktion void SetFlightNumber(short int FliegtNumber); void SetArrivalAirport(char *ArrivalAirport); void SetDestinationAirport(char *ArrivalAirport); void SetArrivalDate(DATE ArrivalDate); void SetDestinationDate(DATE DestinationDate); void SetArrivalTime(TIME ArrivalTime){this->itsArrivalTime = ArrivalTime;}; void SetDestinationTime(TIME DestinationTime){this->itsDestinationTime = DestinationTime;}; //GetFunktion short unsigned int GetFlightNumber(void){return this->itsFlightNumber;} DATE GetArrivalDate(void){return this->itsArrivalDate;} DATE GetDestinationDate(void){return this->itsDestinationDate;} TIME GetArrivalTime(void){return this->itsArrivalTime;}; TIME GetDestination(void){return this->itsDestinationTime;}; void GetArrivalAirport(char *ReturnArrivalAirport, short int &SizeofString); void GetDestinationAirport(char *ReturnDestinationAirport, short int &SizeofString); private: short unsigned int itsFlightNumber; char *itsArrivalAirport; char *itsDestinationAirport; DATE itsArrivalDate; TIME itsArrivalTime; DATE itsDestinationDate; TIME itsDestinationTime; //Secret Funktion int Strlen(char *StringIn); }; ////////////////////////////////////////////////////////////////////////////// // // // Construktor // // // ////////////////////////////////////////////////////////////////////////////// BasicSPKnote::BasicSPKnote(short int FlightNumber, char *ArrivalAirport, char *DestinationAirport, DATE ArrivalDate, TIME ArrivalTime, DATE DestinationDate, TIME DestinationTime) { //Dhlosietabton // //Kurio Programma this->SetFlightNumber(FlightNumber); this->SetArrivalAirport(ArrivalAirport); this->SetDestinationAirport(DestinationAirport); this->SetArrivalDate(ArrivalDate); this->SetDestinationDate(DestinationDate); this->SetArrivalTime(ArrivalTime); this->SetDestinationTime(DestinationTime); } ////////////////////////////////////////////////////////////////////////////// // // // Destrucktor // // // ////////////////////////////////////////////////////////////////////////////// BasicSPKnote::~BasicSPKnote() { //Dilosh MEtablhton //kurio Programma delete [] this->itsArrivalAirport; this->itsArrivalAirport = '\0'; delete[] this->itsDestinationAirport; this->itsArrivalAirport = '\0'; }
-
Wenn ich dann z.b. diese main verwende
#include <iostream> #include "BasicSPKnote.hpp" using namespace std; int main() { /* !------ Check Point DATE Test(13,2,2005); DATE Sest(15,2,2005); cout << Test.GetDay() << "." << Test.GetMonth() << "." << Test.GetYear() << endl; Test.SetDay(14); Test.SetMonth(2); Test.SetYear(2005); cout << Test.GetDay() << "." << Test.GetMonth() << "." << Test.GetYear() << endl; cout << Test << "lala" << endl; Test = Sest; cout << Test << endl; !-------Check Point */ /* !------- Check Point TIME Test1(12,53); TIME Test2(13,12); cout << Test1; Test1 = Test2; cout << Test1; !------- Check Point */ DATE Test1(13,2,2005); TIME Test2(20,00); TIME Test3(22,00); char *t = "ATH"; char *z = "MUC"; BasicSPKnote L(666,t,z,Test1,Test2,Test1,Test3); cout << L << endl; return 0; }
fliegt mir alles um die ohren.
-
Hallo,
zeig mal die Definitionen von SetArrivalAirport und SetDestinationAirport.
-
Wie sieht den dein Konstruktor aus? Du wirst ArrivalAirport und DestinationAirport nicht einfach nur zuweisen?
Davon ab:
delete [] this->itsArrivalAirport; // this->itsArrivalAirport = '\0'; // <--- kompletter Unsinn delete[] this->itsDestinationAirport; // this->itsArrivalAirport = '\0'; // <--- dto
Die letzten Meldungen von gestern: In der C++ Standardbibliothek lässt sich seit neuestem der std::string finden!
-
Ich poste mall die ganze datei. Ist zwar nicht das besste programm :p :p aber naja haupsahe es funktioniert irgentwie.
class BasicSPKnote { //friendly friend ostream &operator<<(ostream &output, const BasicSPKnote &d); public: //Administrativ //Konstruktor BasicSPKnote(short int FlightNumber = 0, char *ArrivalAirport = '\0', char *DestinationAirport = '\0', DATE ArrivalDate = NULL, TIME ArrivalTime = NULL, DATE DestinationDate = NULL, TIME DestinationTime = NULL); //De -Contruktor ~BasicSPKnote(); //SetFunktion void SetFlightNumber(short int FliegtNumber); void SetArrivalAirport(char *ArrivalAirport); void SetDestinationAirport(char *ArrivalAirport); void SetArrivalDate(DATE ArrivalDate); void SetDestinationDate(DATE DestinationDate); void SetArrivalTime(TIME ArrivalTime){this->itsArrivalTime = ArrivalTime;}; void SetDestinationTime(TIME DestinationTime){this->itsDestinationTime = DestinationTime;}; //GetFunktion short unsigned int GetFlightNumber(void){return this->itsFlightNumber;} DATE GetArrivalDate(void){return this->itsArrivalDate;} DATE GetDestinationDate(void){return this->itsDestinationDate;} TIME GetArrivalTime(void){return this->itsArrivalTime;}; TIME GetDestination(void){return this->itsDestinationTime;}; void GetArrivalAirport(char *ReturnArrivalAirport, short int &SizeofString); void GetDestinationAirport(char *ReturnDestinationAirport, short int &SizeofString); private: short unsigned int itsFlightNumber; char *itsArrivalAirport; char *itsDestinationAirport; DATE itsArrivalDate; TIME itsArrivalTime; DATE itsDestinationDate; TIME itsDestinationTime; //Secret Funktion int Strlen(char *StringIn); }; ////////////////////////////////////////////////////////////////////////////// // // // Construktor // // // ////////////////////////////////////////////////////////////////////////////// BasicSPKnote::BasicSPKnote(short int FlightNumber, char *ArrivalAirport, char *DestinationAirport, DATE ArrivalDate, TIME ArrivalTime, DATE DestinationDate, TIME DestinationTime) { //Dhlosietabton // //Kurio Programma this->SetFlightNumber(FlightNumber); this->SetArrivalAirport(ArrivalAirport); this->SetDestinationAirport(DestinationAirport); this->SetArrivalDate(ArrivalDate); this->SetDestinationDate(DestinationDate); this->SetArrivalTime(ArrivalTime); this->SetDestinationTime(DestinationTime); } ////////////////////////////////////////////////////////////////////////////// // // // Destrucktor // // // ////////////////////////////////////////////////////////////////////////////// BasicSPKnote::~BasicSPKnote() { //Dilosh MEtablhton //kurio Programma delete [] this->itsArrivalAirport; this->itsArrivalAirport = '\0'; delete[] this->itsDestinationAirport; this->itsArrivalAirport = '\0'; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : tipota. // // // // Exodos : Epistrefh mia sumbolosira kai to mege8os tis me tin sira. // // // // Skopos : antigrafi apo tin class mas to GetArrivalAirport. // // // // Xronos : O(n). // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::GetDestinationAirport(char *ReturnDestinationAirport, short int &SizeofString) { //dilosh MEtablhton register short int Counter; //counter se turbo mod // Counter = 0; //Kurio Programma //Desmeuoume gia ReturnArrivalAirport ReturnDestinationAirport = new char[4]; //Copia apo to ArrivalAirport tis class sto ReturnArrivalAirport for(Counter = 0; Counter < 3; Counter ++); { ReturnDestinationAirport[Counter] = this->itsDestinationAirport[Counter]; } SizeofString = 4; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : tipota. // // // // Exodos : Epistrefh mia sumbolosira kai to mege8os tis me tin sira. // // // // Skopos : antigrafi apo tin class mas to GetArrivalAirport. // // // // Xronos : O(n). // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::GetArrivalAirport(char *ReturnArrivalAirport, short int &SizeofString) { //dilosh MEtablhton register short int Counter ; //counter se turbo mod // Counter = 0; //Kurio Programma //Desmeuoume gia ReturnArrivalAirport ReturnArrivalAirport = new char[4]; //Copia apo to ArrivalAirport tis class sto ReturnArrivalAirport for(Counter = 0; Counter < 3; Counter ++); { ReturnArrivalAirport[Counter] = this->itsArrivalAirport[Counter]; } SizeofString = 4; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : Dexete enan DAte dedomeno. // // // // Exodos : tipota. // // // // Skopos : Apo8ikeuh tin eisodo stin class. // // // // xronos : O(1). // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::SetDestinationDate(DATE DestinationDate) { //dhlosh MEtablhton // //Kurio Programma this->itsDestinationDate = DestinationDate; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : Dexete enan tipo Date. // // // // Exodos : Tipota. // // // // Skopos : Apo8ikeuh mesa tin calass tin isodos. // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::SetArrivalDate(DATE ArrivalDate) { //dhlosh Metablhton // //Kurio Programma this->itsArrivalDate = ArrivalDate; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : Dexete ena string kai to antigrafi sto itsArrivalAirport. // // // // Exodos : Tipota. // // // // Skopos : Antigrafi den kseri polla antigrafi monon 3 pragmata. // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::SetDestinationAirport(char *DestinationAirport) { //Dhilosh MEtablhton register unsigned short int i; //Metritis se turbo modus static int Called = 0; // i = 0; //Kurio Programma if(Called > 0) { /*Debug line*/cout << "katstrepsou skouliki" << endl; delete[] this->itsDestinationAirport; this->itsDestinationAirport = "\0"; } this->itsDestinationAirport = new char[4]; for(i = 0;i <= 4; i++ ) { this->itsDestinationAirport[i] = DestinationAirport[i]; } Called ++; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : Dexete ena string kai to antigrafi sto itsArrivalAirport. // // // // Exodos : Tipota. // // // // Skopos : Antigrafi den kseri polla antigrafi monon 3 pragmata. // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::SetArrivalAirport(char *ArrivalAirport) { //Dhilosh MEtablhton register unsigned short int i; //Metritis se turbo modus static int Called = 0; // i = 0; //Kurio Programm if(Called > 0) { /*Debug line*/cout << "katstrepsou skouliki" << endl; delete[] this->itsArrivalAirport; } this->itsArrivalAirport = new char[4]; for(i = 0;i <= 4; i++ ) { itsArrivalAirport[i] = ArrivalAirport[i]; } Called ++; } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : Ena flightNumber. // // // // Exodos : Tupota. // // // // Skopos : apo8ikeuh mesa stin class mas. // // // ////////////////////////////////////////////////////////////////////////////// void BasicSPKnote::SetFlightNumber(short int FlightNumber) { //Dhlosh Metablhtos // //Kurio Programma if(FlightNumber > 999 || FlightNumber < 0) { cout << "!!!FATAL ERROR!!! ##__FILE__## 000 000. La8os isodo dedomenon times 0 ews 999 mono." << endl; exit(EXIT_FAILURE); } BasicSPKnote::itsFlightNumber = (short int unsigned)(FlightNumber); } ////////////////////////////////////////////////////////////////////////////// // // // Eisodos : Ena flightNumber. // // // // Exodos : Tupota. // // // // Skopos : apo8ikeuh mesa stin class mas. // // // ////////////////////////////////////////////////////////////////////////////// int BasicSPKnote::Strlen(char *StringIn) { //Dhlosh MEtablhton char *p = StringIn; while(*p != '\0') { p++; } return (p-StringIn); } ////////////////////////////////////////////////////////////////////////////// // // // friendly output barieme na grapso tora. // // // ////////////////////////////////////////////////////////////////////////////// ostream &operator<<(ostream &output, const BasicSPKnote &d) { //dilosh Metablhton //Kurio Programma output << d.itsFlightNumber << " " << d.itsArrivalAirport << " " << d.itsDestinationAirport << " " << d.itsArrivalDate << " " << d.itsArrivalTime << " " << d.itsDestinationDate << " " << d.itsDestinationTime; return output; }
-
Master User schrieb:
Ich poste mall die ganze datei.
Das hättest du dir sparen können. Die beiden Funktionen die ich dir genannt habe hätten gereicht.
void BasicSPKnote::SetDestinationAirport(char *DestinationAirport) { [...] this->itsDestinationAirport = new char[4]; for(i = 0;i <= 4; i++ ) { this->itsDestinationAirport[i] = DestinationAirport[i]; } Called ++; }
Hier ist dein Fehler.
Schau dir noch mal an, wie man in C++ zählt. Insbesondere wo man beginnt.Ist zwar nicht das besste programm
Genaugenommen ist das mehr eine Katastrophe als ein Programm.
aber naja haupsahe es funktioniert irgentwie
Mit dieser Einstellung kommst du nicht weit. Und viele Freunde wirst du dir damit auch nicht machen. Besonders wenn du mal in einem Team programmieren solltest.
-
Ah ja s%/& genau bis drei DANKE!!!!!!!!!!!
Okey ich werde jetzt woll diese funktion ganz endern, da static nicht das beste ist.
hbt ihr eine ide dazu fr diesesproblem
http://www.c-plusplus.net/forum/viewtopic.php?t=101270