Methoden durch reichen



  • Guten Tag,

    Ich habe öfters das Vergnügen zwei klassen vorzufinden die auf die private Methoden der anderen zugreifen muss (Gtest).

    Dafür wrap ich dann immer den funktionsaufruf in eine methode der zweiten klasse also

    class B;
    
    class A {
      int bla();
    
    friend class B;
    }
    
    class B {
      A obj;
    
      int bla() {
        return obj.bla();
      }
    }
    

    Da ich den Spass öfters im Code haben werde, habe ich mir dafür ein kleines Macro geschrieben

    #define BLA(obj, method)                                                    \   template<typename... Args>                                                  \
    auto method(Args... args) {                                                 \
      return obj->method(args...);                                              \
    }
    

    Damit kann ich nun alle methoden matchen die nicht überladen sind... ich brauche aber ein macro um auch überladene methoden so zu matchen 😃

    hat einer eine idee?



  • oh mist... mein fehler... hatte da was blödes gemacht :x

    macro funktioniert so wie es soll *genius*


  • Mod

    Suchst du möglicherweise eher private Vererbung anstatt Komposition?



  • durch die friend-anweisung ist class a für class b doch sowieso komplett public.
    und wenn du class a dann noch an die methode übergibst, rufst du auch immer die richtige auf.


Anmelden zum Antworten