Ich schlachte meinen C-Compiler!! (kompilierfehler)
-
Hmm ... da mischt aber einer C und C++ ... ganz übel ... werd es mal korrigieren ...
-
So ... ist nicht getestet ...
Termin.h
#if !defined TERMIN_H__INCLUDED #define TERMIN_H__INCLUDED #if (_MSC_VER >= 1300) #pragma once #endif // (_MSC_VER >= 1300) class Termin { public: Termin() : m_Begin(), m_Ende(m_Begin + 60 * 30), m_Ort("Unbekannt"), m_Name("Unbekannt"), m_ID(0) {} operator std::string() const { return str(); } bool operator==(std::size_t id) const { return m_ID == id; } bool operator<(const Termin& obj) const { return (m_Anfang() < obj.get_anfang() || m_Ende < obj.get_ende() || m_Name < obj.get_name() || m_ID < obj.get_id()); friend std::ofstream& operator<<(std::ofstream&, const Termin&); friend std::ifstream& operator>>(std::ifstream&, Termin&); friend std::istream& operator>>(std::istream& stream, Termin&); public: std::string const & get_ort() const { return m_Ort; } std::string const & get_name() const { return m_Name; } std::string const & get_beschreibung() const { return m_Beschreibung; } DatumUhrzeit const & get_anfang() const { return m_Anfang; } DatumUhrzeit const & get_ende() const { return m_Ende; } std::size_t get_id() const { return m_ID; } public: void set_ort(const std::string& ort) { m_Ort = ort; } void set_name(const std::string& name) { m_Name = name; } void set_beschreibung(const std::string& beschreibung) { m_Beschreibung = beschreibung; } void set_anfang(const DatumUhrzeit& anfang) { DatumUhrzeit::zeitspanne tmp = m_ende - m_anfang; m_Anfang = anfang; m_Ende = anfang + tmp; } void set_ende(const DatumUhrzeit& ende) { m_Ende = ende; } void set_id() { m_ID = NEXT_ID; ++NEXT_ID; } public: std::string data() const { std::ostringstream ss; ss << "ID: " << m_ID << "\n" << *this; return ss.str(); } std::string str() const { std::ostringstream ss; ss << "Name: " << m_Name << "\nOrt: " << m_Ort << "\nBeschreibung: " << m_Beschreibung << "\nVon " << m_Begin << " bis " << m_Ende; return ss.str(); } public: static std::size_t NEXT_ID; private: std::string m_Ort; std::string m_Name; std::string m_Beschreibung; DatumUhrzeit m_Anfang; DatumUhrzeit m_Ende; std::size_t m_ID; }; #endif // TERMIN_H__INCLUDEDTermin.cpp
std::size_t Termin::NEXT_ID = 1; istream& operator>>(std::istream& stream, Termin& termin) { std::cout << ".Neuer Termin\n" << "-Name: " << std::flush; std::string tmp; std::getline(stream, tmp); termin.set_name(tmp); std::cout << "-Ort: " << std::flush; std::getline(stream, tmp); termin.set_ort(tmp); std::cout << "-Beschreibung: " << std::flush; std::getline(stream, tmp); termin.set_beschreibung(tmp); std::cout << "-Anfang: " << std::flush; DatumUhrzeit tmpDatumUhrzeit; stream >> tmpDatumUhrzeit; termin.set_anfang(tmpDatumUhrzeit); std::cout << "-Dauer: " << std::flush; DatumUhrzeit::zeitspanne tmpZeitspanne; while (!(stream >> tmpZeitspanne)) { stream.clear(); stream.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); } termin.set_ende(tmpDatumUhrzeit + tmpZeitspanne); termin.set_id(); return stream; } std::ofstream& operator<<(std::ofstream& stream, const Termin& termin) { stream << termin.get_id() << "|" << termin.get_anfang() << "|" << termin.get_ende() << "|" << termin.get_ort().length() + 1 << "|" << termin.get_ort() << termin.get_name().length() + 1 << "|" << termin.get_name() << termin.get_beschreibung().length() + 1 << "|" << termin.get_beschreibung(); return stream; } std::ifstream& operator>>(std::ifstream& stream, Termin& termin) { stream >> termin.m_ID; stream.seekg(sizeof(char), std::ios::cur); stream >> termin.m_Anfang; stream.seekg(sizeof(char), std::ios::cur); stream >> termin.m_Ende; /* Ort einlese */ std::size_t length = 0; stream >> length; stream.seekg(sizeof(char), std::ios::cur); char* tmp = new char[length]; stream.get(tmp, length); termin.m_Ort = tmp; delete [] tmp; stream >> length; stream.seekg(sizeof(char), std::ios::cur); tmp = new char[length]; stream.get(tmp, length); termin.m_Name = tmp; delete [] tmp; stream >> length; stream.seekg(sizeof(char), std::ios::cur); tmp = new char[length]; stream.get(tmp, length); termin.m_Beschreibung = tmp; delete [] tmp; return stream; }...
gleich kommt der Rest

-
Alter schwede zeile 18 ist ja einfach nur geil, bin noch nie auf die idee gekommen den || operator so zu nutzen, haste das aus nem buch oder woher ?
Muss jetzt erstma mein programm ans laufen bringen, danach werde ich mir den Rest von dir anschauen.
-
Hmm ne das hab ich nicht aus nem Buch
Soll ich ganz ehrlich sein? Ich hab als 7 Jähriger mal nen Buch gehabt ... hab da die Codes schnell abgetippt ... hab aber 0 verstanden ^^ Dann hab ich mir später mal Code angeguckt und festgestellt das es net so schwer ist ... hab dann mehrere Projekte gestartet ... hab dann bei jedem was gelernt ... hatte dann einen, der mir schonmal wennich garnicht weiter kam schnell geholfen hat(icq) ... bin mittlerweile etwas, nicht viel älter und behersche die Sprache, meines erachtens nach, einigermaßen ...Wenn de willst kannst mir das Projekt am Ende zuschicken dann korrigier ich dir das mal und mach nen paar Schönheitsfehler raus ... aber guck halt immer, dass du den Code auch verstehst!
-
Es läuffftt!!!
Nur noch ein paar Kleinigkeiten fehlen mir:1.Wenn ich einen neuen Termin anlegen will passiert folgendes:
Der Compiler springt immer über die Zeile 209 von CDatumUhrzeit, wenn er den Beginn des Termins einlesen soll und verpasst dem Beginn des Termins dann das Tagesdatum.
Beim einlesen von Ende (ist ja der nächste Schritt) ist alles gleich so wie es aussieht, aber da macht er es nicht.
2. Wenn ich termine.sort() aufrufe kackt er immer ab, ich bin da mit dem debugger nicht weiter gekommen, da sieht für mich alles normal aus.
Ich kann dir das Ergebnis gerne schicken, am besten per mail dann muss ich es nit immer posten und du es nicht kopieren.
Aber die Schönheitsfehler stören mich nicht, ich bin halt ein c++ noob da macht man nunmal nicht alles optimal.
Ich weiß das ich hier und da ne Zeile zuviel eingebaut habe, aber hauptsache mein java code sieht nicht so aus
Das mit dem return x || y || z fand ich schon super, da hab ich echt was von dir gelernt.Und mal ein tipp von mir, du kannst zwar ein paar lines of code sparen wenn du solche konstrukte wie
void set_anfang(const DatumUhrzeit& anfang) { DatumUhrzeit::zeitspanne tmp = m_ende - m_anfang; m_Anfang = anfang; m_Ende = anfang + tmp; }oder
stream << termin.get_id() << "|" << termin.get_anfang() << "|" << termin.get_ende() << "|" << termin.get_ort().length() + 1 << "|" << termin.get_ort() << termin.get_name().length() + 1 << "|" << termin.get_name() << termin.get_beschreibung().length() + 1 << "|" << termin.get_beschreibung();oder
while (!(stream >> tmpZeitspanne)) { stream.clear(); stream.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); }machst, aber das ist einfach schlechter lesbar vorallem wenn du in einem team arbeitest machst du dir damit keine freunde, bzw es wird gar nicht erst geduldet denn da wird eh alles vorm einchecken ins repository durch nen formatter zerpflückt.
Es spart dir auch keine Zeit, denn wenn du später mal an deinem eigenen Code was machst brauchst du auch länger um das zu lesen.Mir was für ner IDE arbeitest du eigentlich ?
Hier ist meine icq nr 71877936, dann schick ich dir darüber den code.
-
Wer mit mir in einem Team arbeitet erkennt bsw. das
while (!(stream >> tmpZeitspanne))... jetzt folgt die Fehlerbehebung ... das ist da unnötig jedesmal nen großesn COde draus zu machen ... man kann es höchstensin nen Template packen...
Mir was für ner IDE arbeitest du eigentlich ?
Microsoft Visual C++ 2005 und Microsoft Visual C++ 2003 ... Microsoft Editor(ok ist keine IDE
) ...Aber die Schönheitsfehler stören mich nicht, ich bin halt ein c++ noob da macht man nunmal nicht alles optimal.
Ich weiß das ich hier und da ne Zeile zuviel eingebaut habe, aber hauptsache mein java code sieht nicht so aus
Nja aber solche Fehler sind potentizielle Bugs ... d.h. solltest du immer auf höchstem Warnungsniveau compilieren und selbst dann, wenn es geht, sogar Warnungen als Fehler ansehen lassen!
Werd mich morgen bei dirmelden ... hab heute keine Zeit für dich ... sorry ... aja ... deine ICQ-Nummer ist falsch. ICQ-Nummern bestehen aus 9 Ziffern ...
-
nene die icq stimmt schon

umso früher man sich registriert hat umso kleiner die nummer.
-
Deine Kommilitonen hätten dir auch geholfen
