Frage zu vector



  • Das ist richtig. Aber eine Deklaration impliziert nicht das Vorhandensein, auch Definition genannt.



  • Och man, immer diese Egotrips hier. Leute, es nimmt euch keiner irgendetwas übel, wenn ihr mal eine Falschaussage macht.

    Aber sich dann hier mit irgendwelchen Argumenten herausreden zu wollen, nur um nicht zuzugeben, dass man sich geirrt hat, ist echt arm.

    Aber eine Deklaration impliziert nicht das Vorhandensein, auch Definition genannt.

    Doch, genau das impliziert sie dem Compiler. Warum sonst solltest du sie deklarieren? Also, wenn du keinen Copy-Ctor deklarierst/definierst, wird vom Compiler einer generiert, der byteweise kopiert.



  • Ego schrieb:

    Aber sich dann hier mit irgendwelchen Argumenten herausreden zu wollen, nur um nicht zuzugeben, dass man sich geirrt hat, ist echt arm.

    Ich rede mich nicht heraus, ich weiß ganz genau dass ich Recht habe. Seit Anbegin der Diskussion schon.

    Ego schrieb:

    Doch, genau das impliziert sie dem Compiler. Warum sonst solltest du sie deklarieren? Also, wenn du keinen Copy-Ctor deklarierst/definierst, wird vom Compiler einer generiert, der byteweise kopiert.

    Für den Compiler, richtig. Wenn ich einen deklariere, der nicht vorhanden ist, dann gibt das einen Fehler, so einfach ist das. Ich könnte sie deklarieren, um Kopieren zu verbieten, so als Beispiel.



  • Hallo "PI",

    deine Klasse müßte dann aber eher 'noncreatable' heißen, denn der Compilerfehler kommt schon beim Anlegen der Variablen n (hat also mit dem vector.push_back gar nichts zu tun)...
    Und wenn geht es um den Kopierkonstruktor d.h. T(const T&), nicht um den Zuweisungsoperator!

    P.S. vllt. solltest du es noch mal wiederholen

    314159265358979 schrieb:

    Frage mich gerade selbst, wieso ich so einen Müll geschrieben habe



  • Th69 schrieb:

    Hallo "PI",

    deine Klasse müßte dann aber eher 'noncreatable' heißen, denn der Compilerfehler kommt schon beim Anlegen der Variablen n (hat also mit dem vector.push_back gar nichts zu tun)...
    Und wenn geht es um den Kopierkonstruktor d.h. T(const T&), nicht um den Zuweisungsoperator!

    Da hast du Recht, mein Fehler.



  • ...ja und? in dem fall ist dein operator privat, d.h. das interessiert erst einmal wenig, dein programm ist so und so nicht lauffähig...inwiefern hilft das weiter bei der widerlegung von drakons aussage?

    wenn du dem compiler sagst: ich habe einen eigenen operator= (und das tust du mit der deklaration - egal ob du ihn im endeffekt "anlügst" oder nicht) dann wird er es mal schön bleiben lassen einen eigenen anzulegen und stattdessen deinen verwenden.



  • hihi schrieb:

    wenn du dem compiler sagst: ich habe einen eigenen operator= (und das tust du mit der deklaration - egal ob du ihn im endeffekt "anlügst" oder nicht) dann wird er es mal schön bleiben lassen einen eigenen anzulegen und stattdessen deinen verwenden.

    Na bitte, geht doch. Nichts anderes habe ich die ganze Zeit gesagt. Und wenn ich ihn "anlüge" ist keiner vorhanden, fertich.



  • argh! ich hab grad eben drakons aussage nochmal genauer unter die lupe genommen, weil ich der ansicht war dass hier irgendjemand ganz groß an irgendjemandem anders vorbeigeredet hat...drakon sprach von "definition". und daran hast du dich aufgehangen...nungut. insofern hast du natürlich recht. sorry für den flamewar.



  • Es kommt auf die Interpretation der ursprünglichen Aussage an:

    Und wenn ich keinen copy-constructor habe, dann können empfindliche Sachen wie z.B. pointer kaputt gehen sehe ich das richtig?

    Was also hier mit "habe" gemeint war. Für mich war das "habe" halt Definition. Dass der TO einen private Kopierkonstruktor gemeint hat halte ich für sehr weit hergeholt.



  • Eine Definition ist auch eine Deklaration, und sobald ich ihn deklariere wird keiner erstellt 😉
    Natürlich wird der Threadersteller das nicht gemeint haben, das ist schon klar.
    Und da mir das falsche Beispiel peinlich ist, hier nochmal richtig: http://codepad.org/h6tShiO8



  • 314159265358979 schrieb:

    Eine Definition ist auch eine Deklaration, und sobald ich ihn deklariere wird keiner erstellt 😉

    Darum habe ich von der Definition gesprochen..

    Natürlich wird der Threadersteller das nicht gemeint haben, das ist schon klar.

    Warum bist du dann darauf eingegangen? Oder warum hast du das nicht gleich unmissverständlich formuliert was du verstanden hast?

    Ich antworte bei Fragen üblicherweise auf das, was der Fragende wohl am ehesten meint, auch wenn er sich manchmal nicht korrekt ausdrückt. Aber dann mit irgendwelchen Spezialfällen zu kommen finde ich zu penibel. Im Zweifelsfall frage ich nach, was er gemeint hat, aber wenn es so offensichtlich ist, dass eine Definition ("haben") gemeint war hacke ich nicht darauf rum, dass er sich falsch/missverständlich ausgedrückt hat. So etwas nervt einfach und bringt am Ende niemandem etwas.



  • Weil es mir erst im Nachhinein klar wurde.


Anmelden zum Antworten