000
22.12.2005, 12:12 Uhr
~maxpower24
Gast
|
Hallo,
ich hab ein komisches Problem. ALSO, ich habe ein Document mit einem vector<CString>. Auf der View sitzt ein Button, mit Hilfe dessen neue CStrings in den Vector des Documents geschrieben werden. Ausserdem sitzt auf der View ein weiterer Button (Button2), mit Hilfe dessen man sich die einzelnen CStrings aus dem Vektor anschauen kann.
Nun, wollte ich den Anwendungscode von Button2 nicht in der Viewklasse haben, und habe an den Button stattdessen einen eigenen ActionListener angehängt. Diesen ActionListener erzeuge ich noch in der View und er bekommt den Zeiger auf die View und den Zeiger auf mein Dokument.
CVisuCenterView::OnInitialUpdate(){ CMyButton button2 = erzeuge button button2.addUserActionLister(new UserActionListener(button2, this, this->GetDocument())) }
Im UserActionLister siehts dann so aus: void UserActionListener::actionPerformed(){ . . . int n = this->document->myVector.size(); //n ergibt hier 0 !!!!! . . . }
Wenn ich mit Button1 3 CStrings erzeuge, dann ist von der View aus die Vektorsize im Dokument 3 (wie erwartet). Wenn ich dann aber auf Button2 klicke, und dort im Actionlistener von dessen Document-pointer die Vektorlänge erfragt wird, kommt 0!!!! Wie kann das sein. Ich dachte, dass wenn ich beim Konstruktor einen Pointer übergebe, ist das CallbyReference...aber offensichtlich scheint doch der ActionListener nicht die richtige Referenz zum Dokument zu haben oder wie??? oder was??? Was stimmt denn hier nicht??
(p.s.: ICh habe eine SingleDocument-Anwendung) |