L-Wert Fehler bei struct

FSA

Erfahrenes Mitglied
Hallo. Nach langer Zeit habe auch ich mal wieder ein Problem, welches ich mir nicht so ganz erklären kann.
In meinem ObjectHandler habe ich ein Struct namens AllObjects.
Jetzt will ich außerhalb von ObjectHandler in diesem Struct etwas ändern. Damit alles schön sauber bleibt, wollte ich die Variable nicht public machen. Also habe ich mir eine Funktion geschrieben, die diese Variable vom Typ AllObjects(Struct) zurück gibt:
C++:
//...
private:
      AllObjects			m_AllObjects;
//...
public:
      AllObjects	GetAllObjectsStruct()	{return m_AllObjects;}

Wenn ich jetzt in dem Struct etwas ändern will, dachte ich mir das so:
C++:
m_pObjectHandler->GetAllObjectsStruct().WallTest = new Model;

Doch da bekomme ich den Fehler:
Code:
Fehler	15	error C2106: '=': Linker Operand muss ein L-Wert sein

Wie kann ich das Problem lösen?
Danke.
 
Zuletzt bearbeitet von einem Moderator:
Hi

Nicht mit C#/Java verwechseln, in C++ sind nicht überall Referenzen.
Du erzeugst beim Returnen eine Kopie von m_AllObjects,
änderst davon in der selben Zeile (außerhalb) etwas,
und dann?

Die Kopie wird nirgends in einer Variable festgehalten,
verschwindet also mit ihrer Änderung wieder.

Pointer oder Referenzen.
C++:
AllObjects* GetAllObjectsStruct() { return &m_AllObjects; }
...
m_pObjectHandler->GetAllObjectsStruct()->WallTest = new Model;
C++:
AllObjects& GetAllObjectsStruct() { return m_AllObjects; }
...
m_pObjectHandler->GetAllObjectsStruct().WallTest = new Model;
 
Ohh natürlich. Da habe ich etwas falsch gedacht. Danke.
BTW: Ich kann weder C# noch Java ;)
 

Neue Beiträge

Zurück