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;
};