Qt dépend très très fortement de son coeur en Qt (avec du QObject, un préprocesseur maison et une boucle d'évènement à la Qt). Ceci le rend très peu généralisable.
Pour donner un exemple concret, une string en Qt, c'est une suite de caractère avec un encodage connu, que tu peux convertir dans d'autre encodages (latin1, utf8, ...). En STL, une string, c'est un tableau de caractère dont l'encodage est inconnu et varie d'un système à l'autre, et varie aussi suivant les options du compilateur. Il est donc a priori impossible de convertir une string STL en string Qt (sans apport d'information extérieur).
Dans la couche réseau de Qt, tu trouveras tout un tas d'autres limitations, lié en général au fait que Qt fait des choix explicites alors que la STL a une approche "ouverte" dans laquelle tu peux plugger le choix que tu veux.
Ca ne veut pas dire qu'il n'y a pas d'échange de bon procédés. Quand tu vois des blog de développeurs Qt, tu constates qu'ils passent à la loupe la STL avant de faire leur choix en terme de techno, d'implémentation, etc etc. Et dans l'autre sens, certaines idées intéressante de Qt ont été reprises dans boost sous une forme plus STL: je pense au célèbre mécanisme signal/slot de Qt, qui dépend du préprocésseur de Qt, et était donc inutilisable en contexte boost/STL. L'idée a quand même plu puisque quelques années après la croissance en popularité de Qt, une implémentation en style boost/STL est apparue (template à mort, pas de préprocesseur): http://www.boost.org/doc/libs/1_57_0/doc/html/signals.html .
[^] # Re: Boule de cristal
Posté par Philippe F (site web personnel) . En réponse au journal Le réseau dans C++. Évalué à 10.
Qt dépend très très fortement de son coeur en Qt (avec du QObject, un préprocesseur maison et une boucle d'évènement à la Qt). Ceci le rend très peu généralisable.
Pour donner un exemple concret, une string en Qt, c'est une suite de caractère avec un encodage connu, que tu peux convertir dans d'autre encodages (latin1, utf8, ...). En STL, une string, c'est un tableau de caractère dont l'encodage est inconnu et varie d'un système à l'autre, et varie aussi suivant les options du compilateur. Il est donc a priori impossible de convertir une string STL en string Qt (sans apport d'information extérieur).
Dans la couche réseau de Qt, tu trouveras tout un tas d'autres limitations, lié en général au fait que Qt fait des choix explicites alors que la STL a une approche "ouverte" dans laquelle tu peux plugger le choix que tu veux.
Ca ne veut pas dire qu'il n'y a pas d'échange de bon procédés. Quand tu vois des blog de développeurs Qt, tu constates qu'ils passent à la loupe la STL avant de faire leur choix en terme de techno, d'implémentation, etc etc. Et dans l'autre sens, certaines idées intéressante de Qt ont été reprises dans boost sous une forme plus STL: je pense au célèbre mécanisme signal/slot de Qt, qui dépend du préprocésseur de Qt, et était donc inutilisable en contexte boost/STL. L'idée a quand même plu puisque quelques années après la croissance en popularité de Qt, une implémentation en style boost/STL est apparue (template à mort, pas de préprocesseur): http://www.boost.org/doc/libs/1_57_0/doc/html/signals.html .