referencen swappen
-
hallo, ich habe keine kleines problem mit meinem code,
ich habe 2 stacks, einer soll als quelle dienen, und
aus den objekten darin werden dann objekte generiert, die in target
landen sollen, dabie werden die objekte in quelle "verbraucht"also dachte ich mir, ich baue mir 2 stacks, und tausche die dann immer
über ihr referencen
also das sind die stacks, und dazu die referencen :Stack<SearchState *> m_openSlots1; Stack<SearchState *> m_openSlots2; Stack<SearchState *>& actual_SourceStack; Stack<SearchState *>& actual_TargetStack;aber das tauschen geht nicht, wie man sieht ...
std::cout << "Target size before switch " << actual_TargetStack.size() << std::endl; std::cout << "Source size before switch " << actual_SourceStack.size() << std::endl; Stack<SearchState *>& temp = actual_SourceStack; actual_SourceStack = actual_TargetStack; actual_TargetStack = temp; std::cout << "Target size after switch " << actual_TargetStack.size() << std::endl; std::cout << "Source size after switch" << actual_SourceStack.size() << std::endl; }denn das liefert :
Target size after expanding 11
Source size after expanding 0
Target size after expanding 11
Source size after expanding 11erwartet hätte ich aber (genau das was ich mit pointern bekomme)
Target size after expanding 11
Source size after expanding 0
Target size after expanding 0
Source size after expanding 11mit pointer gehts, weiss wer warum das mit referencen nicht geht?
-
Du kannst Referenzen in C++ einfach nicht umbiegen. Wie sollte der Compiler denn unterscheiden, ob Du gerade operator= des referenzierten Objekts aufrufen oder die Referenz neu setzen möchtest?
Referenzen müssen (und können nur) bei Initialisierung an ein Objekt gebunden werden.