Σύγκριση με άλλα συστήματα σηματοδότησης

(Μια παρένθεση: η GTK+ αποκαλεί αυτό το σχήμα "σηματοδότηση"· ο ανοιχτομάτης αναγνώστης με εμπειρία πακέτου εργαλείων GUI θα σημειώσει ότι αυτή η ίδια σχεδίαση εμφανίζεται συχνά κάτω από το όνομα "εκφώνηση-ακρόαση" (π.χ. στο σκελετό PowerPlant του Metrowerks για το Macintosh). Δουλεύει χοντρικά με τον ίδιο τρόπο: ένας ρυθμίζει την εκφώνηση και έπειτα συνδέει την ακρόαση με αυτήν· η εκφώνηση κρατά έναν κατάλογο των αντικειμένων που την ακούν και όταν κάποιος δώσει ένα μήνυμα στην εκφώνηση, καλεί όλα τα αντικείμενά της στον κατάλογό της με το μήνυμα. Στην gtkmm, τα αντικείμενα σήματος παίζουν τον ρόλο της εκφώνησης και οι υποδοχές παίζουν τον ρόλο της ακρόασης - κατά κάποιον τρόπο. Περισσότερο για αυτό αργότερα.)

Οι χειριστές σήματος gtkmm είναι ισχυρού τύπου, ενώ ο κώδικας C της GTK+ επιτρέπει τη σύνδεση μιας επανάκλησης με τον εσφαλμένο αριθμό και τύπο ορισμάτων, οδηγώντας σε ένα σφάλμα κατάτμησης στον χρόνο εκτέλεσης. Και, αντίθετα με την Qt, η gtkmm το πετυχαίνει χωρίς τροποποίηση της γλώσσας C++.

Αναφορικά με την αντικατάσταση χειριστών σημάτων: Μπορείτε να το κάνετε στον κόσμο της άμεσης C της GTK+ επίσης· για υτό είναι το σύστημα αντικειμένου του GTK. Αλλά στην GTK+, πρέπει να περάσετε μέσα από κάποιες περίπλοκες διαδικασίες για να πάρετε αντικειμενοστραφή χαρακτηριστικά όπως κληρονομικότητα και υπερφόρτωση. Στην C++, είναι απλό, αφού αυτά τα χαρακτηριστικά υποστηρίζονται στην ίδια τη γλώσσα· μπορείτε να επιτρέψετε στον μεταγλωττιστή να κάνει τη βρόμικη δουλειά.

Αυτή είναι μια από τις θέσεις όπου η ομορφιά της C++ πραγματικά εμφανίζεται. Κάποιος δεν θα σκεφτόταν να δημιουργήσει υποκλάση ενός γραφικού συστατικού GTK+ απλά για να αντικαταστήσει τη μέθοδό ενέργειας του· είναι απλά υπερβολικό πρόβλημα. Στην GTK+, χρησιμοποιείτε σχεδόν πάντα σήματα για να κάνετε τα πράγματα, εκτός και γράφετε ένα νέο γραφικό συστατικό. Αλλά λόγω των μεθόδων αντικατάστασης είναι τόσο εύκολο στη C++, είναι πλήρως πρακτικό - και λογικό - να δημιουργήσετε μια υποκλάση ενός πλήκτρου για αυτόν τον σκοπό.