Kein Kopierkonstruktor verfügbar



  • ist das const echt vorgeschrieben? also vom std?



  • Ohne const ist es ein normaler Konstruktor mit entsprechendem Parameter - glaub ich.



  • aber syntaktisch doch ists doch gleich.
    und const ist ja eh nur ein schlüsselwort für den compiler, dass der optimieren kann bzw. den user warnt falls er was macht, was er nicht will



  • Funktioniert, vielen Dank! 🙂
    Hätte auch nicht gedacht, dass const vorgeschrieben ist.


  • Mod

    Die Stelle, bei der der Fehler auftaucht, wurde nicht gezeigt. const ist im Übrigen nicht vorgeschrieben, auch ein Foo(Foo&) ist ein Kopierkonstruktor, der aber (offensichtlich) keine konstanten Objekte oder rvalues kopieren kann.



  • Klar, keine Funktion/Methode mit einem nicht - const Parameter kann const - Argumente annehmen.
    Will sagen, das gilt nicht nur für Konstruktoren.



  • Skym0sh0 schrieb:

    aber syntaktisch doch ists doch gleich.
    und const ist ja eh nur ein schlüsselwort für den compiler, dass der optimieren kann bzw. den user warnt falls er was macht, was er nicht will

    Nö. const bedeutet hier, dass die Funktion das Objekt nicht ändern kann. Eine wichtige Eigenschaft für Leute, die auf const-correctnes achten. (Wie's auch sein soll.)



  • -.- war klar dass du wieder ankommst.

    da ache ich auch drauf. aber letztlich sieht man es im assembler code ja gar nicht mehr. sprich die werte werden vom compiler hart in den assembler code reingesetzt. oder der andere fall sind halt compiler fehler wenn mans doch ändern will.

    aber ist ja auch egal. wir wissen wofür es ist und die frage war, ob der copy CTor das const zwingend verlangt



  • Schön wie du dich versucht rauszureden Schnucki. <333



  • Skym0sh0 schrieb:

    aber syntaktisch doch ists doch gleich.
    und const ist ja eh nur ein schlüsselwort für den compiler, dass der optimieren kann bzw. den user warnt falls er was macht, was er nicht will

    Das wäre ein Fehler, keine Warnung.

    Natürlich muss das Argument des Kopierkonstruktors const übergeben werden. Woher soll der Compiler wissen, dass der Konstruktor das übergebene Objekt nicht ändert? const ist ja gerade die Markierung für Objekte, die nicht geändert werden dürfen.

    Was mit nicht- const "Kopier"konstruktoren passiert, sieht man an auto_ptr . Eine ganz fiese Semantik, deswegen ist das Ding deprecated.


Anmelden zum Antworten