wxWidgets reines C++?
-
Guten Abend,
ich wollte nur mal eben fragen, nachdem ich gegooglet habe, aber nur über das Thema selbst etwas gefunden hatte, ob wxWidgets reines C++ ist?
-
FreakY<3Cpp schrieb:
ich wollte nur mal eben fragen, nachdem ich gegooglet habe, aber nur über das Thema selbst etwas gefunden hatte, ob wxWidgets reines C++ ist?
WxWidgets ist veraltetes C++. WxWidgets verwendet verschiedenen Orten malloc und free statt new und delete. WxWidgets verwendet keine Standardbibliothek. WxWidgets greift verschiedentlich auf C Header zurück.
Kommt ein wenig darauf an, was du unter reines C++ verstehst. Es ist ein sehr veraltetes und unschönes C++.
Grüssli
-
Dachte ich doch, dass Dravere hier antworten würde...

Ist es nicht auch so, dass WxWidgets massiv auf Makros zurückgreift? Viel mehr als nötig, und dass es stattdessen Templates und andere moderne Alternativen vernachlässigt? Wie siehts eigentlich mit Referenzzählung aus?
-
Alleine schon der Style Guide.. *Schauder*
edit: Am Schlimmsten finde ich immer den Verzicht auf die STL, gibt ja leider gar nicht sooo wenige Libs, die sie nicht verwenden

-
Nexus schrieb:
Ist es nicht auch so, dass WxWidgets massiv auf Makros zurückgreift?
Dem ist so. Allerdings haben sie es zum Teil etwas zurückgefahren, bzw. bieten Alternativen. Beispiel Message/Events und co.
Nexus schrieb:
Viel mehr als nötig, und dass es stattdessen Templates und andere moderne Alternativen vernachlässigt?
Viele Makros wären durch templates ersetzbar. Aber da wxWidgets auch noch die Kompiler von 1990 unterstützen will, kann man natürlich alle tollen Features, welche der C++ Standard von 1998 bietet, nicht verwenden. Zudem sind die Lead Programmierer hinter wxWidgets alte Sturköpfe, welche jegliche Technologie in den letzten Jahre zu verschlafen scheinen.
Nexus schrieb:
Wie siehts eigentlich mit Referenzzählung aus?
Jedes wxWidgets Objekt (oder so gut wie jedes) hat automatisch eine Referenzzählung im Hintergrund. Das heisst damit allerdings, dass jedes Objekt auf den Heap muss, wenn man das Ding auf den Stack legt, kracht es gewaltig. Das soll eine "Vereinfachung" sein. Meiner Meinung nach eher für dümmliche Programmierer gedacht, dafür aber jegliche Kontrolle dem eigentlichen Programmierer weggenommen.
Grüssli
-
Dravere schrieb:
Aber da wxWidgets auch noch die Kompiler von 1990 unterstützen will, kann man natürlich alle tollen Features, welche der C++ Standard von 1998 bietet, nicht verwenden. Zudem sind die Lead Programmierer hinter wxWidgets alte Sturköpfe, welche jegliche Technologie in den letzten Jahre zu verschlafen scheinen.
Ja, das ist echt mühsam. Sieht man ja oft, dass Rückwärtskompatibilität der Tod jeden Fortschritts ist. Trotzdem scheint mir WxWidgets noch sehr verbreitet zu sein...
Dravere schrieb:
Das soll eine "Vereinfachung" sein. Meiner Meinung nach eher für dümmliche Programmierer gedacht, dafür aber jegliche Kontrolle dem eigentlichen Programmierer weggenommen.
Da bin ich genau deiner Meinung! Ich hatte das mal mit VCF (einem anderen GUI-Framework). Ich hasse es, wenn einem gewisse Bibliotheken eine "Hilfe" à la Garbage Collector aufzwängen. Als C++-Programmierer sollte einem die Fähigkeit zugestanden werden, Objekte selber wieder aufzuräumen. Mit RAII ist das nicht einmal besonders schwierig, im Übrigen aber sehr elegant.
-
Was würdet ihr einen "Anfänger" denn anstelle von wxWidgets empfehlen zu lernen?
-
altanativ schrieb:
Was würdet ihr einen "Anfänger" denn anstelle von wxWidgets empfehlen zu lernen?
QT

-
altanativ schrieb:
Was würdet ihr einen "Anfänger" denn anstelle von wxWidgets empfehlen zu lernen?
Im Bereich von GUIs ist das eher schwer. Wirklich was gutes gibt es irgendwie nicht. Es gibt eine Bibliothek, welche aktuell in Entwicklung ist, welche vielleicht etwas werden könnte, aber es steht wohl in den Sternen, wann die fertig sein wird.
Trotz allen Macken würde ich noch am ehesten zu wxWidgets tendieren. Man ist immerhin vom Kompiler unabhängig, ist Opensource, kann aber für closed Source eingesetzt werden, hat eine grosse Community und dadurch viele Hilfsmittel, bzw. Dokumentationen.
Allerdings würde ich dem Anfänger empfehlen, dass er zuerst vernünftiges C++ lernen sollte, bevor er sich in so eine Hölle wagt. Bevor man dorthin geht, sollte man wissen, was schlecht ist und was nicht
GioFX schrieb:
QT

Finde da QT nicht unbedingt besser. Der Pre-Preprozessor sagt da wohl schon vieles und ist noch nicht mal alles.
Grüssli
-
Dravere schrieb:
Es gibt eine Bibliothek, welche aktuell in Entwicklung ist, welche vielleicht etwas werden könnte, aber es steht wohl in den Sternen, wann die fertig sein wird.
Na, deine?

-
Badestrand schrieb:
Dravere schrieb:
Es gibt eine Bibliothek, welche aktuell in Entwicklung ist, welche vielleicht etwas werden könnte, aber es steht wohl in den Sternen, wann die fertig sein wird.
Na, deine?

Ich wollte schon lange mal eine anfangen, kam leider noch nie dazu

Nein, ich habe da eigentlich an die von Artchi gedacht. Als ich die mal vor schon etwas längerem angesehen habe, war sie gar nicht mal so schlecht, also gewisses Potential
Grüssli
-
Wer oder was ist Artchi?
Link?
Für ein gutes Toolkit mit einer freien Lizenz und Plattform Unabhängigkeit kann man sich schon interessieren.
-
IchKaufeEinÜ_üüüü schrieb:
Wer oder was ist Artchi?
Ein Mensch mit einem solchen Nickname, der sich hier im Forum rumtreibt.
IchKaufeEinÜ_üüüü schrieb:
Link?
IchKaufeEinÜ_üüüü schrieb:
Für ein gutes Toolkit mit einer freien Lizenz und Plattform Unabhängigkeit kann man sich schon interessieren.
Ist derzeit bei Version 0.2, also sehr am Anfang und ich frage mich wie lange es wohl dauern wird, bis es in der Version 1.0 ist

Platforumunabhängig ist daher auch derzeit nur geplant. Ist soweit ich weiss noch nichts gemacht, nur vorbereitet.Grüssli
-
Danke für den Link.
-
http://algierlib.tigris.org/ schrieb:
What are the high-level assumptions or ground rules for the project?
* a clean public ISO-C++-interface, i.e. no macros or compiler specific extensions
* writing very good user documentation that helps beginners and professionals
* easy to build and use library
* Provide compiler independent build scripts (bjam)Da kann man fröhlich drüber lachen. Das zu implementieren dürfte ein Kinderspiel sein. Nur holt man sich damit genau die Probleme wieder ins Boot, die mit Makros und den anderen Geschichten verhindert werden sollen. Letztlich eine Zeitverschwendung.
-
Dravere schrieb:
IchKaufeEinÜ_üüüü schrieb:
Wer oder was ist Artchi?
Ein Mensch mit einem solchen Nickname, der sich hier im Forum rumtreibt.
Meistens schreibt er als Unregistrierter. Die Nicks Hansi Hinterseher und Bulli fallen mir da ein.
-
altanativ schrieb:
Was würdet ihr einen "Anfänger" denn anstelle von wxWidgets empfehlen zu lernen?
gtkmm. Das ist schönes "reines" C++. Das einzige was da vielleicht etwas nervt ist, dass es unter Windows recht umständlich einzurichten ist.
-
basti33 schrieb:
altanativ schrieb:
Was würdet ihr einen "Anfänger" denn anstelle von wxWidgets empfehlen zu lernen?
gtkmm. Das ist schönes "reines" C++. Das einzige was da vielleicht etwas nervt ist, dass es unter Windows recht umständlich einzurichten ist.
Ich mag gtkmm zwar auch, aber "reines" C++ ist das nicht. Eher ein reiner C++-Wrapper um reinen C Code.
Dravere schrieb:
...Jedes wxWidgets Objekt (oder so gut wie jedes) hat automatisch eine Referenzzählung im Hintergrund. Das heisst damit allerdings, dass jedes Objekt auf den Heap muss, wenn man das Ding auf den Stack legt, kracht es gewaltig. Das soll eine "Vereinfachung" sein. Meiner Meinung nach eher für dümmliche Programmierer gedacht, dafür aber jegliche Kontrolle dem eigentlichen Programmierer weggenommen...
Sowas in der Art macht Qt im Normalfall leider auch. Es baut Parent-Child-Bäume auf, die (ich glaube beim töten von QApplication) beim Beenden automatisch wieder vom Heap genommen werden. Man kann Qt zwar auch irgendwie mit statischen Objekten betreiben, aber der Aufwand dafür ist recht groß.
-
Tachyon schrieb:
Ich mag gtkmm zwar auch, aber "reines" C++ ist das nicht. Eher ein reiner C++-Wrapper um reinen C Code.
Okay, das stimmt. Aber ich wollte hier eigentlich das ganze nur aus Sicht eines Anwenders betrachten. Und für die ist es ja reines C++, sprich sie müssen sich nicht mit Makros u.ä. beschäftigen. Dass das intern vllt. doch verwendet wird, braucht sie ja nicht zu kümmern...
-
Tachyon schrieb:
Sowas in der Art macht Qt im Normalfall leider auch. Es baut Parent-Child-Bäume auf, die (ich glaube beim töten von QApplication) beim Beenden automatisch wieder vom Heap genommen werden. Man kann Qt zwar auch irgendwie mit statischen Objekten betreiben, aber der Aufwand dafür ist recht groß.
Nur wenn du ein Parent angibst. Übergibst du da NULL (was üblicherweise vorbelegt ist) passiert nix.
Gelöscht werden diese parent-child-bäume afaik beim löschen des parents. Was in meinen augen auch sinn macht.Ich find Qt schon wirklich durchdacht und mMn mit die beste GUI (und vieles andere) -bibliothek die es für c++ gibt.
-
@MasterK
Was meinst du mir mMn?