Mischen mit Qt, STL und Boost - gibt es Brücken, die es leicht machen?
Gibt es irgendwelche Brücken zu machen, mischen Qt mit STL und Boost so nahtlos und einfach wie möglich?
Dies ist ein Nachtrag zu Mischen Qt und Boost, wo keine konkreten Antworten, wie dies zu erreichen gegeben wurden.
- Was genau sind Sie besorgt über? In der Theorie, es sollte nicht sein, dass viele Bereiche, in denen sowohl der boost-und Qt würde müssen Zusammenleben.
- Ich habe keine Probleme hatte, aber da bin ich auch einfach nur zu wissen, Qt, aber mit so viel überlappung bei den Qt, STL und Boost-ich bin sicher, es gibt viele Orte, wo eine Art von Marshalling erforderlich ist. Es ist das gleiche wie mit .NET und C++; das ist der Grund, warum M$ kam mit marshaling library. Ich versuche, um vorbereitet zu sein für Dinge, die ich nicht vermeiden können.
- Erstens, die Firma heißt Microsoft, abgekürzt MS. Nur der 13-jährigen script-kiddies nennen Sie M$. Zweite, .NET/C++ - interop ist ein völlig anderes Tier, wie Sie die Kommunikation zwischen völlig verschiedenen Plattformen, managed und unmanaged code. QT und Boost sind sowohl C++ - Bibliotheken, die in demselben Prozess ausgeführt, mit der gleichen Laufzeit und alles. Kein marshalling notwendig ist es.
- Wenn Sie nichts dagegen haben werde ich mit der Abkürzung, die ich mag. Danke.
- Übrigens, werfen Sie bitte einen Blick auf marshalling auf Wikipedia.
- es ist nicht nur Skript-kiddies: farm1.static.flickr.com/87/240803829_9212773615_o.png ich bin irgendwie schuldig, dies zu...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Welche Brücken brauchen Sie?
Können Sie alle Qt-container-Klassen mit std-algorithmen.
Die meisten der Zeit, die ich lieber die Qt-container-Klassen, da bin ich sicher, Sie verwenden die copy-on-write-idiom (Konstante Zeit). Qt foreach-Funktion erstellt eine Kopie des Containers, so dass es Spaß, dass Sie wissen, für sicher, dass es eine Konstante Zeit den Betrieb.
Wenn die Qt das signal-slot-Mechanismus zu langsam ist, kann man den Schalter für die boost-alternative.
Die große Sache über Qt signal/slot ist der signal/slot-Verbindung zwischen zwei threads.
QtConcurrent funktioniert Super mit BOOST.Lambda
Zur "gemeinsamen" Eltern-Kind-Beziehung, die ich verwenden Sie diese Hilfsfunktion.
Qt-Container werden nicht unterstützt Boost.serialisieren, müssen Sie schreiben die serialize-Funktionen selbst.
Ich würde gerne eine Brücke zwischen der Qt-streaming-Klassen und Boost.Archiv.
Hier ist mein QList Serialisierung Vorlage, die Sie herausfinden können, den rest von Ihnen ...
Wenn Sie wollen Steigern.Binden Griff QPointer wie ein normaler Zeiger (wie shared_ptr):
Mit
QIODevice
wo einstd::stream
benötigt wirdBeispiel
way==ios_base::beg
imseek
setnext
zuoffset
eher alsm_device.pos()
?Was genau ist das problem?
Sie können Sie ignorieren alle Qt-collection-Klassen, wenn Sie möchten, und verwenden STL-äquivalente.
Ebenso können Sie die Verwendung von Boost cross-Plattform-Datei - /Netzwerk-libs.
Den wichtigsten Grund für die Verwendung von Qt ist, ist wahrscheinlich, dass steigern, was nicht unbedingt weit verbreitet, vor allem auf mobilen Geräten. Einige der Boost-die libs sind ein wenig komplizierter zu bedienen als die Qt für einfache Aufgaben.
Im Allgemeinen wirst du besser abschneiden, bei Verwendung von QT, wenn Sie an die QT-Collection-Klassen, anstatt uns STL. Es ist nichts per se in Qt, STL oder Boost, ausschließen würde mit dann in jedem anderen.
Müssten Sie vorsichtig sein bei der Verwendung von smart-Pointer QT hat Eltern/Kind-Beziehung, das sich um die Zerstörung von Objekten, freigeben von Objekten, wenn Sie unter Kontrolle der Qt-werden Sie Abstürzen.