T
OK, es wär vielleicht wirklich etwas zu umständlich einen derartigen "Misch"-Container zu realisieren. Mit zwei unterschiedlich archivierenden Containern, also einem für Referenzen und einem für Pointer, zu arbeiten, ist mit Sicherheit auch keine optimale Lösung, wenn es darum geht eine übersichtliche und allgemeingültige Containerbibliothek aufzubauen.
Ich werd jetzt die gängigsten Container vom STLPort, wie vector, map, list und hash_map mit eigenen Containerklassen kapseln und ein paar zusätzliche Methoden implementieren und Operatoren überladen.
Jetzt muss ich mich nur noch daran gewöhnen, bei der Arbeit mit Containern auch immer Referenzen zu übergeben. Beim Zugriff auf einzelne ContentObjekte bin ich ja wieder frei. Egal ob ich ne Kopie zurückgeben lasse, eine Referenz oder einen Pointer auffange, das müsste ich ja eigentlich mit einer internen Accessorklasse und dem Überladeoperator hinkriegen. Mal schaun!
Und dann noch ne Kleinigkeit:
Zu dem Thema hab ich mich zwar schon geäußert, aber ich probiers an dieser Stelle einfach noch mal.
Ist vielleicht unter euch jemand, der sich schon etwas intensiver mit der 'hash_map'-Klasse von SGI befasst hat?
Es geht nähmlich um folgendes Problem:
In der offiziellen Dokumentation steht folgende Info:
Member:
-------
data_type& operator[](const key_type& k)
Description:
------------
Returns a reference to the object that is associated with a particular key. If the hash_map does not already contain such an object, operator[] inserts the default object data_type().
Wenn ich das richtig verstehe, wird also beí erfolgloser Suche in der HashMap ein DefaultObjekt vom Typ data_type erzeugt, in die Map eingefügt und eine Referenz auf dieses neue Objekt zurückgegeben.
Nur wie erkenne ich denn jetzt anhand dieser Referenz, dass es sich dabei nicht um das ´ContentObjekt' handelt, das ich eigentlich erwartet habe?
Bitte helft mir auf die Sprünge!
Ich kann hier doch nicht der Einzige sein, der sich schon mit den SGI-Erweiterungen befasst hat!
Danke!
Grüße,
TS++
[ Dieser Beitrag wurde am 16.06.2003 um 14:01 Uhr von TS++ editiert. ]