Mit mehreren Methoden auf die selbe Liste zugreifen
-
Hi!
Ich versuche gerade mit einer Liste zu arbeiten. Allerdings kann ich diese nicht global deklarieren. So geht es:
void CtestDlg::OnBnClickedButton1() { CList <CString, CString> liste; POSITION pos; CString m; liste.AddTail("Eins"); liste.AddTail("zwei"); liste.AddTail("Drei"); pos = liste.GetHeadPosition(); while(pos != NULL){ m = liste.GetNext(pos); MessageBox(m); } }Allerdings wird ja dann die Liste jedes mal neu initialisiert, was ja falsch ist.
Jetzt suche ich nach einer Möglichkeit, die Liste nur einmal bei Aufruf des Programms zu initialisieren...
-
Warum machst Du die Liste nicht zum Member Deiner Klasse?
-
Hm, bin leider n Noob.
Kannste mir bitte kurz erklären wie das geht?
-
Hallo
Du arbeitest mit MFC und weißt nicht, was Klassen sind?
chrische
-
Na ja, in etwa so:
im .h File:
class CtestDlg { .... private: CList <CString, CString> m_liste; };und im .cpp:
BOOL CtestDlg::OnInitDialog() { ... m_liste.AddTail("Eins"); m_liste.AddTail("zwei"); m_liste.AddTail("Drei"); } void CtestDlg::OnBnClickedButton1() { POSITION pos = m_liste.GetHeadPosition(); while(pos) { MessageBox(m_liste.GetNext(pos)); } }Wie Du die OnInitDialog() mit Hilfe der IDE erzeugst, weisst Du hoffentlich.
-
Genau so hatte ich es auch gemacht, aber ich bekomme die folgenden Fehler:
Compiling... testDlg.cpp test.cpp c:\TMP\test\testDlg.h(36) : error C2143: syntax error : missing ';' before '<' c:\TMP\test\testDlg.h(36) : error C2501: 'CtestDlg::CList' : missing storage-class or type specifiers c:\TMP\test\testDlg.h(36) : error C2238: unexpected token(s) preceding ';' Generating Code...Edit: Zeile 36 ist diese:
CList <CString, CString> m_liste;
-
probier mal in deiner testDlg.h oben ein
#include <afxtempl.h>hinzuzufügen. In diesem Header ist nämlich die CList Klasse definiert. Um sie zu verwenden muss man den Header includieren. Steht sogar in der MSDN bei der Klasse CList.
Aja und CList<CString, CString> gibt es schon als CStringList.
Grüssli
-
Danke, hat wunderbar funktioniert.
Mit
CList <CString, CString> m_liste;gings net, aber mit
CStringList m_liste;schon.
Komisch...
-
Pegasus schrieb:
Danke, hat wunderbar funktioniert.
Mit
CList <CString, CString> m_liste;gings net, aber mit
CStringList m_liste;schon.
Komisch...
Wirklich? Schreib doch mal:
CList <class CString, class CString> m_liste;