Unerklärbarer Fehler bei Überladung



  • Hallo!

    Ich habe folgendes Konstrukt:

    class A
    {
      meineListe<data> _list;
    
    public:
      void func( A* a, A* b );
    };
    
    class B : public A
    {
      int buffer;
    
    public:
      void func( B* a, B* b) { A::func(a,b); }
    };
    

    Meine Klassen sind um einiges umfangreicher ( ~1000 Zeilen ).

    A* a = new B();
       B* b = (B*)a;
    
       a->func( &b(), &b()); //ok
       b->func( &b(), &b()); //error
    

    b->func( &b(), &b()) gibt irgendwann in den tiefen meines Codes einen Segfault. Bevor ich jetzt den ganzen käse poste:

    Dafür gibt es doch nicht den geringsten vernünftigen Grund oder nicht?!!?
    In B wird doch GENAU das Selbe gemacht wie in A?!? 😕 😕 😡 😕 😕



  • //Edit: Das &b() würde so nicht funktionieren... Habe halt zeiger auf die Objekte, ist nur symbolisch gemeint .... 🙄



  • was soll das: ????

    a->func( &b(), &b());
    

    geht nich einfach

    a->func(b, b);
    

    würde die funktion aus a Virtual machen


  • Mod

    StrangeBug schrieb:

    //Edit: Das &b() würde so nicht funktionieren... Habe halt zeiger auf die Objekte, ist nur symbolisch gemeint .... 🙄

    Der Fehlercode ist auch symbolisch?


Anmelden zum Antworten