1187Fermer1189
Kevin KoflerLe 12/05/2010 à 15:34
Folco (./1180) :
Oui non mais en C++ pur, ya pas de signaux et de [slots], donc je vais dériver.

Le C++ sans signaux et slots (et sans Qt en général) n'a aucun intérêt.
Sinon, pour palier aux manques de signaux et slots du C++, j'ai pensé à ça :
- Ma "première classe" dans l'ordre des créations instancie un objet "communication" dont tous les objets "parlants" du programme recevront un pointeur.
- Chaque objet "parlant" héritent d'une classe "Receive" qui implémente receiveMsg(int n)
- Chaque objet s'enregistre dès sa construction : Communication->register(this, MyID)
- Objet X qui parle à objet ID_truc : Communication->SendMsg(ID_truc, int x)
- Comm qui répercute à ID_truc : entry[ID_truc].ptr->receiveMsg(x)
Donc on a un cast de entry[ID_truc].ptr en "Receive", puis la méthode est appelée.

Et voilà, tu viens de réinventer un système de signaux et de slots (en moins bien tongue).
Sasume (./1185) :
Et oui, ça marcherait très bien. Tu peux même faire de ta classe Communication un singleton, ça t’évitera d’avoir à faire ta bidouille en début d’exécution.

Ou tout simplement un .cpp avec des variables/fonction static pour ce qui est privé et déclarées dans le .h pour ce qui est public, comme en C. Les singletons, ça sert moyennement en C++, grâce à la compatibilité avec le procédural.