Zeiger aus Funktion ändern
-
Hallo,
ich habe eine Klase geschrieben, die mit Zahlen vom Benutzer abfragt.
class Fragebox { void SetText(const wxString& txt); unsigned int GetNumber() const; };Je nach Frage kann es zu Unterfragen kommen. Also wenn z.B. jemand 100 eingibt, dann bedeutet das, "Datei laden" und es muss noch die Nummer der Datei abgefragt werden.
class MyFrame : public wxFrame { protected: Fragebox* aktuell; Fragebox* ersteFrage; Fragebox* zweiteFrage; public: MyFrame(); void BekommeAntwort(); void LadeDatei(); }; MyFrame::MyFrame() { ersteFrage = new Fragebox(); zweiteFrage = new Fragebox(); aktuell = ersteFrage; aktuell->SetText(_T("Ihre Auswahl")); } MyFrame::BekommeAntwort() { if (aktuell->GetNumber()==100) // Datei laden { aktuell = zweiteFrage; aktuell->SetText(_T("Welche Dateinummer?")); aktuell->SetFunktion(&LadeDatei);// Pseudo-Code!!! } } MyFrame::LadeDatei() { aktuell->SetText(wxEmptyString); aktuell = ersteFrage; // Laden... }Das ist natürlich Schema-Code und soll nur darzeigen, was ich mache. Der Bereich geht auch schon bestens und ist natürlich bei mir wesentlich besser Propgrammiert als diese Skizze hier zeigt.
Ich hab jetzt das Problem, dass ich die Zeiger von aktuell, ersteFrage und zweiteFrage in eine andere Klasse übergeben muss, die mir dann evtl. das aktuell auf ersteFrage oder zweiteFrage stellen.
class IrgendEineKlasse { protected: Fragebox* aktuell; Fragebox* ersteFrage; Fragebox* zweiteFrage; public: void SetFrageBoxen(Fragebox* aktuellBecome, Fragebox* ersteFrageBecome, Fragebox* zweiteFrageBecome); void Umschalten(); }; IrgendEineKlasse::SetFrageBoxen(Fragebox* aktuellBecome, Fragebox* ersteFrageBecome, Fragebox* zweiteFrageBecome) { aktuell = aktuellBecome; ersteFrage = ersteFrageBecome; zweiteFrage = zweiteFrageBecome; } IrgendEineKlasse::Umschalten() { aktuell = zweiteFrageBecome(); aktuell->SetText(_T("Umschalten")); }Und hier liegt mein Problem. Ich habe nun zwar in der Fragebox zweiteFrage den Text stehen "Umschalten", aber es ist in MyFrame immer noch ersteFrage in aktuell.
Wie bekomme ich aus meiner Funktion IrgendEineKlasse::Umschalten den Zeiger von MyFrame::aktuell geändert ohne diesen public zu machen?
-
stefanjann schrieb:
Wie bekomme ich aus meiner Funktion IrgendEineKlasse::Umschalten den Zeiger von MyFrame::aktuell geändert ohne diesen public zu machen?
Indem du in der Klasse für diese Eigenschaft Setter und Getter schreibst (also sowas wie MyFrame::SetAktuell usw.).