Frage zu Warnung C4355



  • Ich hab mal ne Frage zu der Warnung.

    Ich habe eine Konstruktion nach folgendem Vorbild:

    class A
    {
    public:
        int i;
    };
    
    class B
    {
    public:
        A *a;
        B(A *_a)
          :a(_a)
        {
            a->i;
        };
    };
    
    class C:public A,public B
    {
    public:
        C()
          :A(),B(this)
        {};
    };
    

    Hier gibt es ja eine Warnung wegen this in Initialisierungsliste. Ich habe die Konstruktion schon getestet und sie Funktioniert da ich ja nur auf A zugreife das ja schon Konstruiert ist. Meine Frage dazu ist kann ich so eine Konstruktion Bedenkenlos benutzen, oder gibt es da evtl noch Nebeneffekte?



  • problemlos, würde ich denken.
    kritisch ist folgendes:

    class Window{
       virtual void show();//rahmen malen und hintergrund weiß machen
       Window(){
          registerWindow(this);//in globale liste ientragen und anzeigen
       }
    };
    class Button:public Window{
       string text;
       void show();//Window::show aufrufen und Knopftext anzeigen
    };
    
    void registerWindow(Window* w){
       theWindows.push_back(w);
       w->show();//AUA AUA AUA, der Knopftext ist nicht da
    }
    

Anmelden zum Antworten