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;
    }
    

Anmelden zum Antworten