Frage zu Copy Konstruktor



  • Kaasbrot schrieb:

    Also folgendes, ohne eigenen Kopier Konstruktor

    fa::Object a,b;
    a = b;
    
    fa::Light c,d;
    c = d;
    

    ist möglich.

    Du bringst ja auch überhaupt keinen copy ctor ins Spiel. Nochmal zur Verdeutlichung:

    foo a; // default ctor
    a = b; // Zuweisungsoperator (op=)
    foo a = b; // copy ctor
    

    Um deinen Fehler zu spezifizieren, müssen wir deine Light Klasse kennen.
    Ich vermute, dein Problem liegt darin, dass du keinen default ctor (ctor ohne Parameter) in Object definiert hast. Diesen erzeugt dein Compiler zwar automatisch, aber nur, wenn du keinen ctor selbst definiert hast.





  • Hi,
    Also ich habs jetzt nochmal ausprobiert und diesmal auch wirklich den copy ctor benutzt. Funktioniert bei der Object und der Light Class problemlos.

    fa::Object a;
    	fa::Object b = a; // oder auch fa::Object b( a );
            //und das ganze geht mit Light auch
    

    Nur sobald ich eine der beiden Klassen in eine push_back Funktion ihrer zugehörigen Vectors stecke kommt dieser Fehler ganz vom Anfang( "Kein Kopierkonstruktor verfügbar").

    groovemaster2002 schrieb:

    Ich vermute, dein Problem liegt darin, dass du keinen default ctor (ctor ohne Parameter) in Object definiert hast. Diesen erzeugt dein Compiler zwar automatisch, aber nur, wenn du keinen ctor selbst definiert hast.

    Ich hab schon probiert einen default ctor anzulegen. Kommt der gleiche Fehler.



  • Zeig doch mal mehr Code ... was für ein vector ist das, wie sieht Light aus ... unnötigen Krams wie irgendwelche irrelevanten Methoden weglassen. Allgemein alles weglassen, was man weglassen kann, ohne dass der Fehler verschwindet.



  • Sersn,
    Ich hab jetzt rausgefunden was schuld ist an dem Fehler. Ein Template von mir, welches einen Punkt darstellen soll. Kenn mich da noch nicht so gut aus. Könnte mir jemand sagen was daran nicht stimmt?

    [edit]
    Hat sich erledigt. Lag alles an dem = operator.
    Danke für alle Antworten!
    [/edit]


Anmelden zum Antworten