Wrapping von Containern



  • Hi,

    immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.

    Erste Frage: Ist das überhaupt eine gute Idee?

    Das ganze passiert öfters. Ich dachte, es muss doch in Boost ein Klassentemplate geben, dass das erledigen kann, oder?
    Also einfach ableiten und die Methoden und der Container werden bereitgestellt. Mithilfe von verschiedenen Template-Parametern kann man dann den Zugriff festlegen.



  • ...



  • Für Random-Access-Container wenn du nur read access erlauben willst:

    class SonesLazyClass: public boost::iterator_range<SonesContainer::const_iterator>{};
    

    //edit am EInfachsten aber:

    class SonesLazyClass{
    public:
        SonesContainer& sonesContainer();
    };
    


  • Sone schrieb:

    immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.

    lol



  • volkard schrieb:

    Sone schrieb:

    immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.

    lol

    *sigh*
    Volkard kannst du bitte aufhör'n? 😃
    Du willst doch dein Image als Anfängerhelfer pushen.

    otze schrieb:

    Für Random-Access-Container wenn du nur read access erlauben willst:

    class SonesLazyClass: public boost::iterator_range<SonesContainer::const_iterator>{};
    

    Ahh, stimmt, das kannte ich - hab ich aber wieder vergessen. Ich wusste da war was. Jup, so sollte das sein - vielen Dank!



  • vergiss aber nicht, dass Veränderungen des containers die range invalidieren können.



  • Sone schrieb:

    volkard schrieb:

    Sone schrieb:

    immer wieder dasselbe: Ich habe Klassen, die intern einen STL-Container halten. Und ich möchte Methoden wie begin() und end(), Index-Operatoren, usw. und die üblichen dinger (size() usw.) anbieten. Je nach dem.

    lol

    *sigh*
    Volkard kannst du bitte aufhör'n? 😃
    Du willst doch dein Image als Anfängerhelfer pushen.

    Denk dran, daß

    class vector_der_sich_sortieren_kann
    

    nicht gilt, weil man sowas mit externen algorithmen dranflanscht,
    und dass

    class vector_der_sich_am_ende_seber_speichert
    

    nicht nötig ist, weil das der Besitzer ebenso kann,
    und dass

    for(auto& insasse:meinPorsche)
    

    vollkommender Schwachsinn ist, weil der Mascinenbauer denkt for(auto& zahnrad:meinPorsche).

    Und dann schreib auf, warum Du *immer wieder* sowas brauchst, Du wirst selber lachen müssen.


Anmelden zum Antworten