J'ai lu plusieurs questions similaires à ce sujet mais aucune ne semble résoudre le problème auquel je suis confronté. La réponse typique est de lancer en tant que classe dérivée mais je ne peux pas puisque je ne connais pas le type de classe dérivé.Comment appeler une méthode de classe dérivée à partir de la classe de base?
Voici mon exemple:
class WireLessDevice { // base class
void websocket.parsemessage(); // inserts data into the wireless device object
}
class WiFi : WireLessDevice { // derived class
GPSLoc Loc;
}
dispositif sans fil peut également être dérivé pour rendre Bluetooth, Wi-Max, cellulaire, appareils, etc., et donc je ne sais pas quel type de wirelessdevice va recevoir les données .
Lorsqu'un paquet GPS est reçu sur la socket Web dans la classe de base, j'ai besoin de mettre à jour l'emplacement du périphérique dérivé. Je pensais peut-être envoyer un message via une file d'attente ou créer un gestionnaire d'événements et envoyer l'emplacement dans les arguments d'événement, mais ceux-ci semblent un peu maladroit lorsque les données restent dans la classe.
Y at-il quelque chose de intégré dans le langage qui me permettrait d'appeler mon périphérique dérivé de la classe de base sans connaître le type?
Jetez un coup d'œil au motif de décoration. Votre problème semble être votre mauvais design. –
Pas besoin de décorateur ... Jetez un coup d'œil aux méthodes abstraites ou virtuelles ... – Crisfole