STL und wxTextCtrl/ wxStaticText
-
Hallo,
Leider habe ich wieder ein Problem, an welchem ich mich leider verbeiße. Ich möchte Eingabefelder ansprechen, indem ich sie sozusagen in eine 3 dimensionale Matrix (3dim-Array) einbaue. Das hat für mich enorme praktische Vorteile. Aus einer externen Textdatei kann ich schon alles so auslesen, dass es genau in diese Maske passt. Während ich hierbei mit der Klasse der wxString keine Probleme habe, machen mir jetzt die Eingabefelder und die statischen Textfelder das Leben schwer.
Was ich machen möchte: Es sollen in der ersten Dimension wxTextCtrl oder wxStaticText Elemente dem vector zugefügt werden. Also habe ich das mit der Methode vector->push_back(*wxTextCtrl/*wxStaticText); versucht. Das Prinzip funktioniert dabei nicht, weil sich die StaticText und TextCtrl verweigern
../../../include/wx/msw/stattext.h: In function
void std::\_Construct(\_T1*, const \_T2&) [with \_T1 = wxStaticText, _T2 = wxStaticText]': ../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl\_vector.h:560: instantiated from
void std::vector<_Tp, _Alloc>::push_back(const _Tp&) [with _Tp = wxStaticText, _Alloc = std::allocator<wxStaticText>]'
../../../MeinProgramm.cpp:203: instantiated from here
../../../include/wx/msw/stattext.h:52: error:wxStaticText::wxStaticText(const wxStaticText&)' is private ../lib/gcc/mingw32/3.4.2/../../../../include/c++/3.4.2/bits/stl_construct.h:81: error: within this context ../../../include/wx/msw/stattext.h: In member function
void std::vector<_Tp, _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename _Alloc::pointer, std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp = wxStaticText, _Alloc = std::allocator<wxStaticText>]':usw.
mein Programm sieht dabei so aus:
wxStaticText *ptr_Static1 = NULL; ptr_Static1 = new wxStaticText(m_Window, wxID_STATIC, wxT("Abstand:"), wxDefaultPosition, wxDefaultSize); (this->m_Parameter_Beschr)->push_back(*ptr_Static1);
in der Klasse ist definiert
typedef std::vector<wxStaticText> Parameter_Beschr; typedef std::vector<Parameter_Beschr> Zeilen_Beschr; typedef std::vector<Zeilen_Beschr> Objekte_Beschr; PECSGeom_Parameter_Beschr *m_Parameter_Beschr;
-
Natürlich geht das so nicht. STL Container speichern per "copyvalue", d.h. sie kopieren den Inhalt der Klasse in eine eigene Instanz.
Beschäftige dich evtl. damit erstmal näher, bevor du es praktisch in Programmen anwendest, im C++ Magazin findest du ein paar gute Artikel für den Einstieg.Zu deinem Problem:
Du kannst (und solltest!) hier pointer speichern. Das geht Problemlos, mach ich ja auch in meinem Tutorial was du im C++ Magazin findest.
Das Löschen übernimmt ja sowieso wxWidgets.phlox
-
okay verstehe, also dadurch, dass es bei wxString einen Constructor wxString(wxString) gibt, hatte ich in diesem Fall quasi Glück. Werde mir das Tutorial mal durchsehen und mich wieder etwas einlesen.