Unterscheiden zwischen const und non-const Aufrufen

  • Ich schreib grad aus Spaß an der Freude an einem reference counted Auto-Pointer. (Nein, ich will die Boost nicht verwenden, ich will den Code mal selbst schreiben zum Üben.) Um den AutoPtr als Ersatz für den Originalpointer zu verwenden, hab ich den

    Code
    operator T*(void) bzw. 
    operator const T*(void) const


    überschrieben.

    Jetzt ist das Problem folgendes: die const Variante wird nur aufgrund der constness vom AutoPtrObject ausgewählt, nicht aufgrund des return Typs. Was natürlich beim Reference Counting a bisserl problematisch ist, weil beinahe jede Konvertierung auf den Originalpointer non-const sein wird, und ich dadurch andauernd Daten kopieren muss, weil sie ja verändert werden könnten.

    Ein ähnliches Problem gibts ja, wenn man den index operator überlädt, aber da konnte ich mir mit Proxy Objekten weiterhelfen. Wie ich allerdings im Objekt erkennen kann, ob ein const T* oder doch T* verlangt wird, kann ich mir im Moment nicht erklären.
    Hat da jemand von euch vielleicht Erfahrung, Tipps und/oder Links zu solchen?

    dankeschön,
    BearT

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!