Moc est là pour rajouter une couche d'introspection qui n'existe pas dans C++ malheureusement. On peut pas faire autrement avec un langage aussi statique et typé. Cette fonctionnalité permet de pouvoir appeler une fonction par son nom ce qui est assez pratique avec le système signaux/slot qui supportent les overloads.
On pourrait très bien faire sans, en utiliser juste une liste de std::function sauf que Qt, ça a un passé et ça évolue petit à petit.
Je précise que sans ça, ça serait difficile d'implémenter des interface depuis les .ui. En effet, ces fichiers XML peuvent déjà aider à mettre des signaux/slots au moment du chargement de l'UI et tout ça de manière sécurisé puisque moc va créer des vrais fonctions typés. Alors qu'une alternative utilisant dlopen serait totalement non-typé.
[^] # Re: C++ / Modèle Objet
Posté par David Demelier (site web personnel) . En réponse au journal [Bookmark] Qt fête ses vingt ans. Évalué à 3. Dernière modification le 21 mai 2015 à 15:18.
Moc est là pour rajouter une couche d'introspection qui n'existe pas dans C++ malheureusement. On peut pas faire autrement avec un langage aussi statique et typé. Cette fonctionnalité permet de pouvoir appeler une fonction par son nom ce qui est assez pratique avec le système signaux/slot qui supportent les overloads.
On pourrait très bien faire sans, en utiliser juste une liste de
std::functionsauf que Qt, ça a un passé et ça évolue petit à petit.Je précise que sans ça, ça serait difficile d'implémenter des interface depuis les .ui. En effet, ces fichiers XML peuvent déjà aider à mettre des signaux/slots au moment du chargement de l'UI et tout ça de manière sécurisé puisque moc va créer des vrais fonctions typés. Alors qu'une alternative utilisant
dlopenserait totalement non-typé.AI is a mental disorder