Parameter direkt übergeben
-
Du möchtest also in deinem vector einen Pointer auf die Variable speichern. Nur zu, geht genau so wie man es erwarten würde.
Ich sollte noch erwähnen, dass es zwar sinnvolle Anwendungen dafür gibt, ich jedoch den starken Eindruck habe, dass so ein Fall hier nicht vorliegt. Welches Problem möchtest du eigentlich lösen?
-
SeppJ schrieb:
Ich sollte noch erwähnen, dass es zwar sinnvolle Anwendungen dafür gibt
Was wäre eine sinvolle Anwendung für sowas?
-
pyhax schrieb:
SeppJ schrieb:
Ich sollte noch erwähnen, dass es zwar sinnvolle Anwendungen dafür gibt
Was wäre eine sinvolle Anwendung für sowas?
Pointer auf Objekte in anderen Containern braucht man schon häufiger, wenn man komplexere Datenstrukturen aufbaut. Das ist auch eine gute Anwendung für den klassischen, rohen, besitzlosen Pointer.
-
Naja, ich habe mir sagen wir eine minikleine "Grafikengine" für die Win32 Konsole( "echte" Grafik traue ich mich noch nicht :P) programmiert, die einzelne Elemente unterschiedlicher Form, Größe und Farbe zeichnet und auch bewegen kann; für ein TowerDefense spiel, das ich mache.
In dieser "Engine" sind zwei Klassen erhalten. Eine Element und eine Buffer Klasse.
So, nun hat die Buffer Klasse einen Vector von Typ Element in sich, der dafür da ist, um die jeweiligen Infos aus einem Element auszulesen und in einen puffer zu schreiben. Dieser puffer wird dann auf den Bildschirm gezeichnet.
Außerdem hat die Buffer noch eine Funktion "addElement", die wie der Name schon sagt, ein neues Element in den vector hinzufügt. Wenn ich jetzt in der main jedoch die Position oder sonst was des hinzugefügten Elements verändere, ändert sich ja im vector in der Klasse Buffer nichts, da es ja nur eine Kopie ist und somit sich das Bild auch nicht ändert. Ja...dafür bräuchte ich das.
-
Klingt irgendwie seltsam ... Du hast also viele Elemente. Und die hast Du doppelt, einmal in einem Vektor, und dann - irgendwie - "in der main"?
Wie verwaltest Du die denn "in der main"?
-
So gehts: http://ideone.com/TOWq8
-
Belli schrieb:
Klingt irgendwie seltsam ... Du hast also viele Elemente. Und die hast Du doppelt, einmal in einem Vektor, und dann - irgendwie - "in der main"?
Wie verwaltest Du die denn "in der main"?ja genau darum möchte ich ja keine Kopie von diesen im vector haben sondern DAS Element
-
pyhax schrieb:
So gehts: http://ideone.com/TOWq8
Vielen Dank!
EDIT: Gibt jetzt nur ein Problem:
die funktion deleteElement will jetzt nicht mehr...
Genauer gesagt die Funktion .erase von dem Element* vector.*iter = *ElemArr.at(i); ElemArr.erase(iter);
Fehler:
'std::_Vector_iterator<_Myvec> std::vector<_Ty>::erase(std::_Vector_const_iterator<_Myvec>)': Konvertierung des Parameters 1 von 'std::_Vector_iterator<_Myvec>' in 'std::_Vector_const_iterator<_Myvec>' nicht möglich 1> with 1> [ 1> _Myvec=std::_Vector_val<Element *,std::allocator<Element *>>, 1> _Ty=Element * 1> ] 1> and 1> [ 1> _Myvec=std::_Vector_val<Element,std::allocator<Element>> 1> ] 1> and 1> [ 1> _Myvec=std::_Vector_val<Element *,std::allocator<Element *>> 1> ] 1> Kein benutzerdefinierter Konvertierungsoperator verfügbar, der diese Konvertierung durchführen kann, oder der Operator kann nicht aufgerufen werden
-
*iter = *ElemArr.at(i); ElemArr.erase(iter);
Zeig doch mal etwas meht code. Vlt denn der funktion deleteElement?
-
hat sich erledigt...
habe vergessen einen iterator von Element* zu machen... hab ihn ausversehen von Element gemacht :>
naja jedenfalls danke Leute