initialisierung mit this?



  • ist folgendes illegal?

    class A
    {
      public:
        B *b;  
        X( ) : b( new B( this ) ){ }
    };
    

    wenn ich im ctor

    b = new B( this );
    

    schreibe funktioniert alles, obiger code erzeugt höchst seltsames verhalten 🤡



  • Sollte eigentlich erlaubt sein. Welches Verhalten erzeugt der Code denn und in welcher Situation?



  • A ist ein feld das ich B gebe um drin zu zeichnen.
    wenn ich nun die ctor-initialisierungsliste verwende ist in diesem feld oben links ein hässlicher schwarzer balken 🙄

    ich verwende Qt, kanns daran liegen?

    edit: auch die keyPressEvent's funktionieren dann nicht mehr, stell ich gerade fest. mmmmh 😞

    edit2:

    ...In the constructor, be sure to set up your member variables early on, before there's any chance that you might receive an event...

    kann es sein das die initialisierungsliste nach dem ctor aufgerufen wird?
    naja irgend so etwas muss es sein, ist ja nicht weiter schlimm nur hab ich stundenlang nach einem fehler gesucht und nicht mit so etwas gerechnet. 🕶



  • kann es sein das die initialisierungsliste nach dem ctor aufgerufen wird?

    Die Initialisierungsliste wird vorher abgearbeitet, also noch bevor die Initialisierung von *this überhaupt begonnen wird (kann z.B. zu Verwirrung bei virtuellen Funktionen führen)



  • kann z.B. zu Verwirrung bei virtuellen Funktionen führen

    das wirds dann wohl sein


Anmelden zum Antworten