Designfrage: wxWidgets



  • Hallo zusammen

    Es geht speziell um Ausgabe und Verarbeitung.
    Als Framework benutze ich wxWidgets was ich auch sehr und einfach finde.
    Ich habe mehrere Klassen für die Benutzeroberfläche und Klassen für die Datenverarbeitung. z.b. eine Klasse für die Listbox usw und eine Klasse (Decode) um eine Datei zu decodieren.

    Was ist besser? Sollte ich in dieser Klasse (Decode) z.b. mit wxString arbeiten oder lieber an den Standard halten und mit std::string arbeiten und std::string für die Ausgabe nach wxString convertieren?

    Danke



  • Also ich persönlich würde innerhalb wxWidgets mit wxString arbeiten.
    wxString und std::string sind ohnehin ziemlich leicht ineinander zu konvertieren:

    std::string str("Ein Test-String");
    wxString wxs( str.c_str() ); // Konvertierung von wxString zu std::string über std::string::c_str()
    wxs.foo();
    str = wxs.c_str(); // Konvertierung von std::string zu wxString über wxString::c_str()
    

    Im übrigen kann man wxWidgets darauf einstellen, dass wxString von std::string abgeleitet wird, und somit alle Funktionalitäten von std::string enthält. (Tipp: setup.h -> #define wxUSE_STL 1 )



  • Die korrekte Frage die du dir stellen solltest lautet:
    "Will ich nur für wxWidgets programmieren, oder soll die lib für die grafische Oberfläche ersetzbar sein?"
    Wenn du nur für wxWidgets programmieren wirst, nimm wxString. Sollte einfacher und (durch die wegfallenden Konvertierungen std::string<->wxString) performanter sein.
    Falls wxString EINE Option für die Gui ist, musst du etwas exakter trennen. Die core-Teile (also alles was nix mit der Gui ansich zu tun hat) verzichten auf wxString/QString, verwenden statt dessen std::string (oder gleich const char*, wenn es bequem geht). Du kannst dann natürlich diesen Teil in eine eigene Lib packen. wxString/QString/... kommen dann erst mit der Gui hinzu. Evtl. gibt es noch Zwischenschichten, um die Core-Klassen an das jeweilige SIGNAL/SLOT-Konzept des Frameworks anzubinden.



  • Danke

    Ich werde dann wohl std::string verwenden.



  • Du solltest dir noch eine ganz andere Frage stellen: Soll Unicode möglich sein?



  • Ja, Unicode soll möglich sein, also werde ich std::wstring verwenden.


Anmelden zum Antworten