Des QObject template partout…

Avez vous déjà rêvé de QObject template ? C’est a dire de pouvoir créer vos propre classe template qui dérivent de QObject et permettent d’utiliser les signaux et slots, le meta-object, les propriétés ?

template<class T>
class MyWonderClass : public QObject {
    ...
};

Si oui, alors :

  • premièrement, vous faites des rêves bizarres, n’hésitez pas a consulter 😀
  • deuxièmement… c’est possible maintenant !

Olivier Goffart, Qt Maintainer (c’est a dire responsable d’un module de Qt) du moc, auteur de woboq, conférencier régulier aux journées des développeurs Qt, s’est amusé (oui, encore un autre qui devrait peut être consulter… ils sont fous ces développeurs Qt) a écrit une petite bibliothèque pour utiliser Qt sans le moc (donc, il développe un outil pour se mettre lui même au chômage technique, en gros ? Quand je disais que les développeurs Qt sont fous).

Verdigris: Qt without moc

Donc, le but premier est de pouvoir se passer du moc dans Qt. Pour rappel, le moc est un parser qui lit les fichiers d’en-tête, trouve les classes Qt et génère des fichiers de source (moc_xxx.cpp) qui implémentent des fonctionnalités pour manipuler un meta-object dans chaque classe qui utilise la macro Q_OBJECT.

Le résultat est fonctionnel (dans les premiers tests réalisés), avec une syntaxe un peu plus lourde qu’avec le moc. Et, cerises sur le gâteau, il permet d’écrire des classes template dérivant de QObject, de créer des « nested » classes dérivant dans QObject. et plus besoin de déclarer ses classes dans un fichier d’en-tête. Et, a priori, cela serait compatible avec Qt 5.

A suivre.

 

Les templates variadiques

Un article de Stendhal666 :

LES TEMPLATES VARIADIQUES, UN NOUVEL OUTIL DE PROGRAMMATION GÉNÉRIQUE

Petite anecdote, j’ai voulu vérifier si j’avais parlé des templates variadiques dans mon article sur le C++11 (Nouvelles fonctionnalités du C++11). Et non ! 🙂

Il faut savoir que j’ai commencé a écrire cet article lors de la sortie de GCC 4.6 et que je l’ai progressivement complété en remontant les versions de GCC… et je ne suis pas allé assez loin pour arriver aux templates variadiques.

Apres vérification, les templates variadiques ont été ajoutés dans GCC 4.3 en 2008 (Status of Experimental C++0x Support in GCC 4.3).

Pour une fonctionnalité qui date officiellement de 2011 et qui est disponible depuis 2008, il était temps que quelqu’un écrive un tutoriel sur le sujet. Voila un oubli qui est réparé.

N’hésitez pas a rédiger un article si vous connaissez une fonctionnalité du C++11 qui est en manque de tutoriel en français.

(Note : j’ai également prévu d’en parler dans mon cours : Les classes et fonctions variadiques. Mais du fait que c’est plus de la méta-programmation, ça sera un survol rapide dans ce premier cours.)

Parlons un peu du C++17…

Quelques lectures sur les propositions du C++17 et leur avancement.

Mise a jour 17 mai :