Pointer Reference
-
Get gibt T& zurück. T = int, Get gibt int& zurück. T = int*, Get gibt int*& zurück.
Wo ist das Problem?^^
-
Hast du denn ein Problem mit der Pointerreferenz?
-
also ich habe mal gelesen, dass ein get auf nen container idealerweise eine reference zurück gibt. da die List<T> für zig typen verwendet wird, hier halt T & get(unsigned int index);
ich frage mich ja so ein wenig, was den überhaupt ne reference auf nen pointer ist. da doch ne reference eigentlich ne art materialisierter pointer ist. falls ihr mich versteht?
-
genau. pointerreferenze. was muß ich mir da vorstellen drunter???

-
sven_ schrieb:
also ich habe mal gelesen, dass ein get auf nen container idealerweise eine reference zurück gibt.
Ohne Begründung sind solche Weisheiten relativ schwachsinnig. Da du eine non-const Referenz zurückgibst, kannst du z.B. sowas machen:
mylist.get(blabla) = blub;Das ist aber nicht "standard get", sondern das will man so oder man will es nicht.
ich frage mich ja so ein wenig, was den überhaupt ne reference auf nen pointer ist. da doch ne reference eigentlich ne art materialisierter pointer ist.
Referenzen kann man als eine Art Pointer verstehen. Dann ist es halt ein Pointer auf einen Pointer. Problem?
-
nun,
die idee mit pointer auf pointer kam mir dann auch, nur frag ich mich, warum dann mein code geht:
Object* msg = get(i); if (msg != NULL){ msg->foo(); } ...Wenn get() nun tatsächlich ein Object*& zurückgibt, welches ich als Pointer auf Pointer betrachten soll, dann ist es also ein Object**. Damit dürfte aber msg->foo() nicht mehr gehen. Tuts aber. Oder übersehe ich was.
-
Wenn dir das solche Schwierigkeiten macht, vergiss das mit dem "als Pointer vorstellen".
-
na solche schwierigkeiten machst ja nun direkt nicht. aber ich wills auch nicht einfach so hinnehmen. wenn ich an mein info 1 kurs denke, funktioniert dies schon, wäre, dann aber schweine ineffizient, da es ja quasi nen materialisierter pointer ist, der auf nen pointer zeigt. somit ne doppelte indirektion. nun ist die frage, ob dies so ist. ???
-
Was der Compiler daraus macht kann dir niemand sagen. Kann eine doppelte Indirektion sein, kann eine sein, kann keine sein.
-
naja, dann lass ich es mal so.
dachte schon, muß das mit irgendwelche type_traits fixen.vielen danke an die runde.
