gif gif up gif contents
Nächste Seite: D.2.8 CBattribute Vorige Seite: D.2.6 CBderiveExpression

D.2.7 CBref

CBref ist eine Implementierung von sogenannten smart pointern [Str91]. Der Datentyp CBref<V> ist gleichbedeutend mit V*. Als Template-Parameter werden die generierten Klassen für die Sichten eingesetzt. Für die Objekte einer Sicht sollen aber nicht direkt C++-Zeiger verwendet werden, da diese auf ungültige Speicherbereiche verweisen, wenn das Objekt durch die Sichtenwartung gelöscht wurde. Außerdem wird so sichergestellt, daßes keine Speicherleichen gibt, d.h. Objekte die nicht mehr referenziert werden. In den Konstruktoren und im Destruktor dieser Klasse werden die addReference- und removeReference-Methoden der Klasse CBview aufgerufen. Für die Vergleichsoperatoren werden die entsprechenden Operatoren des referenzierten Objekts aufgerufen.

template<class V>
class CBref {
 public:
    // Constructors
    CBref();
    CBref(V& v);
    CBref(V* v);
    CBref(const CBref<V>& v);
    CBref(const CBterm* t);

    // Destructor
    ~CBref();
    
    // Methods
    bool isValid();
    
    // Operators
    CBref<V>& operator=(const CBref<V>& v);
    V* operator->() const;
    V& operator*()  const;
    V& operator[](int i) const;
    bool operator==(CBref<V>& v);
    bool operator==(V& v);
    bool operator==(const char* s);
    bool operator<(CBref<V>& v);
    bool operator<(V& v);
    bool operator<(const char* s);

 private:
    V* pData;
};



Christoph Quix
31. Juli 1996