Inhalt von Vector in Listenfeld
-
Hallo Leute,
schon wieder ich, brauche aber Hilfe...
Habe einen vector<CServer*> m_vServerliste als public, in einer Class die heisst CServerliste.
Dann gibt es eine Class mit CServer.
Dort stehen m_strServername usw.Jetzt habe ich den Vector gefüllt. Wenn ich den Vector in eine Datei schreibe, kommt der Inhalt korrect.
Jetzt will ich aber z.b m_strServername im Listenfeld eines Dialoges habe
(CServerDialog) mit einer Schleife soviele Server es gibt und anzeigen lassen.
Es kommt aber nichts...Hier der Code:
BOOL CServerDialog::OnInitDialog()
{
CDialog::OnInitDialog();
CServerliste m_cServerliste;// TODO: Zusätzliche Initialisierung hier einfügen
CListBox* pLB = (CListBox*) GetDlgItem(IDC_LISTSERVER);
for(int i= 0; i != m_cServerliste.getAnzahlServer(); i++)
{
// Hier sollte der Servername angezeigt werden....
pLB->InsertString(-1, "Dokumentation");}
// Aufruf nach Initialisierung
return CDialog::OnInitDialog();return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX-Eigenschaftenseiten sollten FALSE zurückgeben
}KAnn mir jemand Helfen ??
Gruß
andy_mann
-
Mal abgesehen davon das CServerListe unbekannt ist...
Wo ist das Problem ?
-
Wieso ist die Unbekannt ??
habe in der ServerDialog.h die Serverliste includiert....
Gruß
andy_mann
-
Kann mir keiner Helfen,
wie greiffe ich auf den Vector zu der in einer anderen class inplementiert ist und gefüllt wurde...
Gruß
andy_mann
-
Gib der CServerliste einfach eine Funktion
vector<CServer*> * GetList();
Oder überlade für die Klasse CServerliste den operator[].Devil
-
Genau dass probiere ich jetzt schon seit einem Tag....
nicht funktioniert aber..hier meine Funktion..
std::vector<CServer*> CServerliste::getServerliste()
{
return vServerliste;
}dann probier ich mit
CServerliste m_Serverliste;
int anzahl = m_Serverliste.getServerliste().sice();
in der CServerDialog diese Funktion auf zu rufen um z.b. die anzahl heraus zu finden.Geht aber nicht...
Gruß
andy_mann
-
Hm, kann es sein das CServer keinen Copy Konstruktor hat ?
Devil
-
Doch....
CServer::CServer(std::string u_strID, std::string u_strName, CServerliste* u_pServerListe)
{
m_vServerListe = u_pServerListe;
fDatenbankInVector(u_strID, u_strName);
}void CServer::fDatenbankInVector(std::string u_strID, std::string u_strName)
{
m_strID = u_strID;
m_strServername = u_strName;}
im Debug modus, sehe ich dass die Variablen gefüllt mit Inhalt da sind, aber irgendwie wird der vector dann nicht gefüllt..
Gruß
andy_mann
-
1. benutze bitte Code Tags.
2. Informiere dich was ein Copy Konstruktor ist, und wofür er da ist.
Devil
-
andy_mann schrieb:
Wieso ist die Unbekannt ??
Naja, ich kenne CServerListe nicht. Ohne zu wissen wie die Klasse ausschaut kann man Dir nur sehr allgemeine Tips geben !?
#include <vector> class test { public: typedef std::vector<int> MyInternalVec ; test() { for(int i = 0;i<100;++i) myVec.push_back(i); } const MyInternalVec & getvec() { return myVec; } private: std::vector<int> myVec; }; using namespace std; int main(int argc, char * argv[]) { test t; const test::MyInternalVec & vec = t.getvec(); for(test::MyInternalVec::const_iterator pos = vec.begin();pos != vec.end();++pos) cout<<*pos<<'\n'; return 0; }