wxString in va_arg() benutzen



  • Hallo zusammen..

    Habe gerade folgenden funktionierenden Quelltext geschrieben:

    void BasicFrame::ParaMitWxString(int anzahl, ...)
    {
    	va_list para;
    	va_start(para, anzahl);
    
    	for (int i=0; i<anzahl; i++)
    	{
    
    		wxString* t = va_arg(para, wxString*);
    		*mycont << *t << _T("\n");
    	}
    	va_end(para);
    }
    

    Dieser funktioniert soweit. Wenn ich es folgendermaßen aufrufe:

    wxString* n = new wxString(_T("blabla - 1"));
    wxString* m = new wxString(_T("blabla - 2"));
    
    ParaMitWxString(2, n,m);
    

    Würde die funktion allerdings gerne wie folgt aufrufen:

    ParaMitWxString(2, _T("wxString 1"), _T("wxString 2"));
    

    Bekomme aber dabei die Variablen nicht in die Funktion rüber.
    Bzw. bekomm einen Programmausstieg wenn ich den Quelltext wie folgt abändere. (*t in t) geändert

    void BasicFrame::ParaMitWxString(int anzahl, ...)
    {
    	va_list para;
    	va_start(para, anzahl);
    
    	for (int i=0; i<anzahl; i++)
    	{
    
    		wxString t = va_arg(para, wxString);
    		*mycont << t << _T("\n");
    	}
    	va_end(para);
    }
    

    Kann ich das 'va_arg' Macro überhaupt benutzen wenn ich direkt einen wxString anstelle eines *wxString übergeben möchte.. ??



  • Ja die Lösung so simple. Vergaß irgendwie das _T("wxString 1") ja kein wxString Object ist, sonder eigentlich in dem Moment ein wxChar*.

    Also hab das mal jetzt ausgetauscht und es funzt jetzt natürlich. Hier der geänderte Quelltext, falls auch mal wer anders so auf der Leitung sitzt wie ich gerade eben... 😉

    void BasicFrame::ParaMitWxString(int anzahl, ...)
    {
        va_list para;
        va_start(para, anzahl);
    
        for (int i=0; i<anzahl; i++)
        {
    
            wxChar* t;
            t = va_arg(para, wxChar*);
            wxString r(t);
            *mycont << r << _T("\n");
        }
        va_end(para);
    }
    

Anmelden zum Antworten