Objekte im Konstruktor
-
Hallo alle zusammen
Danke für die Hilfe !
-
Nimm mal die Forward-Declarations aus den Klassendeklarationen raus und schreib sie davor.
-
Im Prinzip ist es okay, wie Du es machst, als Verbesserungsvorschlag würde ich
den Konstruktor der Klasse das Studienorganisators aber etwas abändern.class CStudienorganisator { CStudienorganisator( const char* cName, const CHochschule& rHighSchool) : m_school(rHighschool) { strncpy(m_name, cName, sizeof(m_name)); } private: const CHochschule& m_school; const char[128] m_name; }
Folgende Gründe: Es muss ein Hochschul-objekt existieren wenn man eine Referenz
übergibt. So kann keine Scheinhochschule an den Konstruktor übergeben werden.Beispiel:
CStudienorganisator("Eine nicht existente Schule", NULL);
Von wem würde der Studienorganistor wohl sein Geld bekommen ???
Viel schlimmer noch, Dein Programm fliegt Dir um die Ohren!Das Hochschulobject sollte konstant sein, denn Ich vermute, das
ein Studienorganisator nicht berechtigt ist, eine Hochschule zu zerstören.Beispiel:
CStudienorgansitor::Kündigen() { // wenn ich gehen mu0, dann die Schule auch! delete CHochschule; }
Das ein paar Tipps von meiner Seite, vielleicht helfen diese Dir weiter.
Gruss
-
Die Variablen sollten nicht protected sondern private sein. Ansonsten sieht der Code ganz gut aus. Auch wenn es vielleicht einfacher wäre statt char* std::string zu verwenden.
MfG Jester
-
Warum eigentlich nicht die NULL Hochschule zulassen? Immerhin könnte es auch arbeitslose Studienoranisatoren geben. Den Zeiger konstant zu lassen halt ich auch nicht für ne gute Idee. Da könnte man dann doch auch gleich ne Referenz verwenden. Aber der Zeiger sorgt dafür, daß die Schule auch gewechselt werden kann.
Die Begründung mit dem delete ist etwas schwach. Man kann sich nicht vor absichtlicher Verwüstung schützen, nur vor Dingen, die eben aus versehen passieren. Denn jemand der vor nichts zurückschreckt, der castet auch das const weg.MfG Jester
-
-
-
Klar, ich wollte damit nur sagen, daß man sich nicht gegen alles schützen kann. Wenn ich jemandem einen Zeiger gebe, dann normalerweise, damit sich das referenzierte Objekt auch ändern kann und er halt Zugriff darauf hat.
Wenn ich jetzt diesen Zeiger konstant mache, dann kann man ihn nicht mehr ändern und verliert damit auch möglicherweise wichtige Flexibilität. Selbstverständlich gebe ich damit demjenigen die Möglichkeit das Objekt zu löschen. Aber wer sowas tut braucht sich auch nicht zu wundern, daß das Programm nicht funktioniert. Derjenige tut sowas dann nämlich mit Absicht. Und sojemanden hält dann auch das const nicht ab. Wenn ich jemandem einen Zeiger zu Verfügung stelle, dann kann er halt auch delete drauf aufrufen. Aber ehrlich gesagt habe ich das bis jetzt nie als Problem gesehen und denke auch nicht, daß man sich davor schützen müßte.
MfG Jester
-
// create a new CHochschule object
cout << "Eine neue Hochschule wurde eingeweiht!" << endl;Huh...
// get the name of the object
Hochschule->getName();...und ich hatte gedacht hier wird ein Döner bestellt.
// standard destructor
Und wie sieht ein Nicht-Standard-Destruktor aus? Und was kann der so?
CHochschule* m_pCHochschule; // pointer on a CHochschule object
Ach das ist keine Multiplikation?
Mal ehrlich. Wer lehrt eigentlich immer diese schwachsinnigen Kommentare?
Entweder wird das Offensichtliche kommentiert oder aber etwas, dass besser im Code direkt im Code stehen sollte.Kommentare sind nicht dazu da, anderen zu beweisen, dass man die gewwählte Programmiersprache verstanden hat. Kommentare sollen erklären *warum* etwas getan wird und warum es gerade an dieser Stelle getan wird. Was man tut sagt bereits der Code. Wenn man etwas sehr cleveres tut, kann man noch das wie erklären. Außerdem ist es für andere fein, wenn man seine Schnittstellen spezifiziert. Was garantiert eine Methode? Was erwartet sie? Wann ist hier Verhalten undefiniert?
Nur mal so als Anregung.
-
-
Ne, Informatiker die nicht in einem Team arbeiten können benehmen sich wie folgt:
Viel schlimmer sind die Infos die gar nichts tun und sagen und meinen der Teampartner schafft das schon, ich lege mal die Füsse hoch, auch wenn ich zur Abgabe beim Dozenten nichts erklären kann und sowieso von nichts nen Plan habe und wenn mein Teampartner mich aus dem Team wirft dann heule ich ihm einen vor das ich das doch gar nicht kann und frage ihn ob er Gott ist. Au die Antwort ich solle ein Buch lesen sage ich ich habe 2 (zwar die selben aber auch egal) und das ich es nicht verstehe und sag ihm das seine Erklärungen zu schnell waren (auch wenn 1 Zeile 10 minuten gedauert haben).Außerdem ist bis auf ein paar Kommentare seine Kritik gerechtfertigt, weil eine solche Doku nichts bringt außer nervige grüne Zeilen, die eh keiner liest. Es sollte lieber geschrieben werden z.B. warum rechnungen so ausgeführt werden wie sie ausgeführt werden und was das bringen soll oder warum diese bedingung und nicht die gegenteilige oder so.
Code-Hacker
-
Du must aber auch zugeben, dass man schreiben kann -->
Mach mal weniger auf Kommentar.
oder so wie er, sich über jemanden lustig machen.
Ich dachte eigentlich das ich hier in einem Forum gelandet bin wo man Hilfe findet, nicht wo Götter sich feiern lassen.
-
nein, aber man muss auch - auch als jemand, der anonym im netz surft - auf kritik gefasst sein, die etwas schroff klingt; man sollte darauf nicht beleidigend antworten
-
Na ich weis ja nicht ob das der richtige weg ist ?
Jemand der mit C++ startet kann sich vor Problemen kaum retten und da brauch ich viel aber nicht so was...
-
Ich habe doch gesagt das er hätte sich einige Kommentare sparen können, zumal du ja nicht eine Frage zum 100sten mal gestellt hast und dich vorher auch mit deinem problem denke ich auseinander gesetzt hast und nach der lösung gesucht hast.
Was Dokumentation betrifft so ist die in C++ ja nichts anderes als in anderen Sprachen auch. Da gibt es nämlich einige Standards. Also sowas wie Zuweisungen und das da ein Pointer-Deklariert wird ist echt nicht nötig. Wie gesagt, nur "Beonderheiten", also eher die Logik die dahinter steckt.
Dokumentation ist also ein allgemeines und nicht direkt auf eine Sprache zugeschnittenes Problem. Ansonsten kann man es dir nicht zum Vorwurf machen, da das wesentlich besser ist bei einer Frage im Forum als gar keine Kommentare oder sonst was zum Programm und dann eine Frage wie "Wo ist der Fehler?".Code-Hacker
-
1. Wer ist "er"?
Wenn du (Bender2) jemanden kritisierst, dann wäre es nett, wenn du diesen "jemand" auch persönlich ansprechen würdest.2. Ich habe mich über niemanden lustig gemacht.
Selbst wenn man Kommentare mittlerweile als Individuen betrachten sollte (eine Entwicklung die mir neu wäre), sehe ich nicht, wo ich mich über diese Kommentar-Wesen lustig gemacht haben soll.Auf jeden Fall keineswegs mehr als die Kommentare sich über die Intelligenz des Adressaten lustig machen.
3. Wieso editierst du (Bender2) deine Aussagen weg, so das derjenige, der in selbigen scheinbar kritisiert wurde, nicht mal mehr die Chance hat etwas auf die Kritik zu erwidern? Das halte ich für äußerst unhöfflich.
Du must aber auch zugeben, dass man schreiben kann -->
Mach mal weniger auf Kommentar.
Man kann sehr vieles machen. Mein Anliegen war aber nicht dich persönlich zu kritisieren sondern die Art und Weise der Kommentierung.
Diese Form der Kommentierung ist ein generelles Problem, kein personenbezogenes.
Du hast den konkreten Anstoss geliefert, kritisiert habe ich das generelle Phänomen.Ich dachte eigentlich das ich hier in einem Forum gelandet bin wo man Hilfe findet, nicht wo Götter sich feiern lassen.
Wo bitte lassen sich hier Götter feiern? Hinter den wenigsten Kritiken stecken Götter die sich feiern lassen wollen. Hinter dieser konkreten stecke ich (HumeSikkins). Kein Gott und keine Feier.
Du kannst nicht einfach stink normale Personen zu Göttern erheben und das dann dem Forum vorwerfen.@Code-Hacker
Außerdem ist bis auf ein paar Kommentare seine Kritik gerechtfertigt,
Ich bin immer noch hier.
-
HumeSikkins schrieb:
@Code-Hacker
Außerdem ist bis auf ein paar Kommentare seine Kritik gerechtfertigt,
Ich bin immer noch hier.
Ja, war mir klar. Und was willst du mir jetzt damit sagen?
Code-hacker
-
Und was willst du mir jetzt damit sagen?
Das ein "Außerdem ist Humes Kritik bis auf ein paar Kommentare gerechtfertigt"
imo deutlich angebrachter wäre. Zumindest solange ich hier mitlese.Ich bin kein namenloser Spinner sondern ein Spinner mit Namen. Es wäre also nett, wenn du meinen Namen auch verwenden würdest, wenn du über mich sprichst.
Oder anders ausgedrückt:
Solange "er" im Raum ist, ist es nur fair, wenn "er" auch namentlich erwähnt wird, wenn "er" gemeint ist.
-
Man, man, man. Nagut, ich merke es mir für das nächste mal und es tut mir leid! Zufrieden?
Code-Hacker