for_each ausgabe einer klasse
-
Dravere schrieb:
Die Sache ist aber, dass Gustl nun schon mehrfach gesagt hat, dass der Code genau der gleiche wäre. Zudem wäre der Fehler nicht beim operator << aufgetaucht, sondern beim operator >>. Also geht die Argumentation in meinen Augen überhaupt nicht auf.
Doch geht sie... da ich "gedebuggt" habe und schritt für schritt mit meinen programm fortgeschritten bin, bis zu diesem f>>tmp; also operator überladung...
dann kam der stack overload, aber const hat er in keinster weise angesprochen^^Bei euren unstimmigkeiten halte ich mich dezent zurück und lass mich von euren Weisheiten berieseln.

MfG Gustl
-
@Gustl,
1. Er behauptet, dass der Fehler eben nicht beimoperator >>war, sondern beimoperator <<. Du sagst allerdings soeben wieder, dass dem nicht der Fall ist. Deswegen geht seine Argumentation nicht auf.
2. Man könnte vielleicht noch unter seinen Ausführungen das folgende verstehen, wobei diese Argumentation ziemlich weit hergeholt wäre.
Du hast uns diese hier gezeigt:std::istream& operator>>(std::istream& instream, Adresse const & adresse)Er behauptet, du hättest tatsächlich dies hier geschrieben gehabt:
std::istream& operator>>(std::istream& instream, Adresse & const adresse)Dies hätte aber minimum zu einer Warnung geführt. Und es ist sehr unwahrscheinlich, dass dies der Grund für den Stackoverflow gewesen wäre.
Daher die Frage an dich Gustl, was hattest du genau hingeschrieben?
Grüssli
-
argh, ich werde heute abend daheim das programm nochmal durchspielen und euch dann ganz genau sagen wann mit welchem vode NUR der stack overflow Fehler aufgekommen ist.
fakt ist, das der fehler beim const im operator überladen >> kommt, da hier ja die referenz verändert wird... der compiler den code aber anstandslos kompiliert hat.
Noch einmal, und auch von meiner Seite aus ein letztes mal, ich habe hier den code kein einziges mal geändert und es immer so geschildert wie ich es wahrgenommen habe. Ich möchte hier jedoch nicht ausschließen das ich eine Warnmeldung übersehen habe.
im code von der seite 3 steht ja
std::istream& operator>>(std::istream& instream, Adresse & const adresse)
-
Gustl schrieb:
im code von der seite 3 steht ja
std::istream& operator>>(std::istream& instream, Adresse & const adresse)Was aber im Minimum zu einer Warnung führen würde, da es falsch ist. Und auf Seite 4 steht das hier:
std::istream& operator>>(std::istream& instream, Adresse const & adresse)Was hast du nun hingeschrieben?

Grüssli
-
Nachdem ich darauf hingewiesen wurde das ich const nicht richtig eingesetzt habe, habe ich das verdreht und dann hier nachgefragt wo der unterschied ist, auf seite 4 oder so... dann wurde mir erklärt das es keinen gibt und ich das schreiben könne wie ich will.
den ersten code habe ich mit borland (2002) kompiliert und den zweiten mit visual studio (2005).
Ob nun Warnungen vorhanden waren oder nicht, kann ich nicht unterstreichen, da werde ich dann heute Abend daheim nochmal gucken und euch dann genau sagen ob es warnungen gibt.
Aber darauf rumzureiten bringt doch jetzt auch nichts oder? Fakt ist das er somit in beiden Fällen keinen Fehler brachte und das Programm anstandslos kompiliert hat, wie gesagt, ob Warnungen dabei waren will ich mich jetzt nicht festlegen...
-
Gustl* schrieb:
Aber darauf rumzureiten bringt doch jetzt auch nichts oder?
Doch, ich glaube nämlich langsam, dass minastaros in dem Punkt recht haben könnte. Auch wenn seine Argumentation ein wenig zu wünschen übrig lässt.
Daher, dass du noch etwas lernen kannst.
Gustl* schrieb:
Nachdem ich darauf hingewiesen wurde das ich const nicht richtig eingesetzt habe, habe ich das verdreht und dann hier nachgefragt wo der unterschied ist, auf seite 4 oder so... dann wurde mir erklärt das es keinen gibt und ich das schreiben könne wie ich will.
Du solltest mal auf die genaue schreibweise achten. Es gibt drei Schreibweisen, welche bisher genannt wurden. Zwei sind gleich, eine ist falsch:
/* 1. */ Adresse const& /* 2. */ const Adresse& /* 3. */ Adresse& const1. und 2. sind gleich, 3. ist falsch.
Grüssli
-
Dravere,
wenn Du von sowas Frustrationen bekommst, ist das Dein Problem.
Ich habe kein Problem damit, wenn mich jemand verbessert oder einen anderen Weg zeigt. Foren sollten dazu da sein, sich auszutauschen. Ich schätze sehr, dass Du Dir so viel Zeit genommen hast, von der fachlichen Seite ja auch gut. Manchem stimme ich gerne zu, anderem nicht. Wie wir ja jetzt festgestellt haben, kommen wir aus anderen Bereichen und haben daher auch andere Erfahrungen.
Es ist nur so, dass es irgendwo am Ziel vorbeigeht, wenn einer ständig nachweisen muss, wie dumm und unerfahren der andere ist und wie nervig es sei, den Neulingen erstmal "vernünftig" programmieren beizubringen. Ich hoffe nicht, dass Du mit Deinen Kollegen auch so umgehst ("Unsinn", "größter Witz", "absoluter Knüller", "schon wieder ein Neuling").
Ich drücke mich vielleicht nicht immer 100% präzise aus, mag sein. Natürlich weiß ich, was streng genommen ein globaler Iterator ist. Was ich meinte war doch, dass man keinen Iterator von außerhalb der Methode bzw. Schleife benötigt, weil man Variablen so lokal wie möglich definieren sollte. Das war mit "global" gemeint. Nur habe ich nicht vorgehabt, einen Gesetzestext zu schreiben und nahm an, dass auch Du verstehen würdest, worauf es mir eigentlich ankam. Dann ist es eben eine Membervariable, schön, Punkt für Dich, dann schreib das doch einfach hin.
Es ist nämlich müßig, über Argumentation als solche zu argumentieren.
-
minastaros schrieb:
Ich hoffe nicht, dass Du mit Deinen Kollegen auch so umgehst.
Nur wenn sie auch solchen Unsinn erzählen

Ganz ehrlich, das Hauptproblem ist doch, dass du in diesen Thread reinschneist und anfängst Tipps zu geben. Du verfasst einen grossartigen Beitrag, sogar mit Übertiteln. Es sieht hochprofessionell aus und für einen Anfänger mag das nach der absoluten Wahrheit klingen.
Wenn man es sich aber eben anschaut und ein wenig Wissen über C++ hat, merkt man dass es sehr subjektiv ist, die Argumentation teilweise nicht stimmt und gewisse Begriffe im falschen Kontext verwendet werden. Anders gesagt, der Beitrag hat tatsächlich ziemlich wenig Wert.
Nun spricht man dich darauf an und du fängst dich an rauszuwinden, erneut seltsame Argumentationen zu bringen, Programmcodes liefern, welche etwas beweisen sollen, aber es stimmt gar nicht. Es zeigt sich meiner Meinung einfach, dass hier ein C++ Neuling ein wenig die Klappe zu weit aufgerissen hat. Deshalb habe ich ursprünglich auch von Troll geredet, da man eigentlich gut sieht, dass der Verfasser nicht viel Ahnung von den Themen hat, über welche er gepostet hat.
Zum Thema globaler Iterator, das einzige was du irgendwie noch ansprichst, den Rest der Kritik scheinst du wohl schlicht und einfach zu ignorieren:
1. Wieso drückst du dich so unpräzise aus? Und ich meine es ist nicht 90% oder sowas, sondern die Präzision war irgendwo bei 10%. Das ist einfach unprofessionel und überhaupt nicht hilfreich. Ich kann verstehen, dass man Fehler macht bei einer Argumentation, aber du scheinst es nicht mal als Fehler zu sehen.
2. Es hat nichts mit streng genommen zu tun. Eine globale Variable ist genau definiert.
3.Was ich meinte war doch, dass man keinen Iterator von außerhalb der Methode bzw. Schleife benötigt, weil man Variablen so lokal wie möglich definieren sollte.
Und du hast dies als Argument gegen
std::for_eachund für deinFOREACHgenommen. Was die Sache immer noch nicht besser macht. Des Weiteren hast du geschrieben, dass so ein Iterator schlecht sei und man solle ihn vermeiden. Das stimmt bei einer richtigen globalen Variable, aber nicht unbedingt bei einer Membervariable. Ich kenne einige, welche das anders sehen und den Iterator ganz klar in der Klasse definieren würden. Das ist eine reine Geschmacksfrage.
4. So wie du die Sache verfasst hast, hatte man das Gefühl, dass dies der Weisheit letzter Schluss ist. Etwas anderes gibt es nicht. Sonst hättest du mehr Relativierungen reinnehmen müssen.
5. Es geht ja nicht mal unbedingt darum, ob es nun eine Membervariable ist oder ein globale Variable. Das Problem steht in den Punkten 1 - 4, nur für diese Sache. Und du willst es nicht mal einsehen, wie mir scheint, sondern windest dich eben raus. Bisher hast du auf keinen meiner Kritikpunkte vernünftig gegenreagiert. Du hast zum Teil sogar über völlig andere Sachen geschrieben und dann neue Unwahrheiten hingeschrieben.Es ist nämlich müßig, über Argumentation als solche zu argumentieren.
Ich frage mich gerade, wieso? Viele Diskussionen handeln genau darüber, grundsätzlich so ziemlich jede.
Ich kann mir aber schon ein paar Antworten zusammenreimen.Grüssli
-
Leider war es mir gestern nicht möglich mich noch einmal um den code zu kümmern, nächste Gelegenheit dann Donnerstag... aber ihr seid ja eh mit etwas anderem beschäftigt

MfG Gustl
-
hier ein Link zum Thema Pointer oder Objekte in Containern:
http://www.boost.org/doc/libs/1_38_0/doc/html/intrusive/performance.html