Diese Frage ist möglicherweise ein Duplikat von this, aber ich verstehe nicht, wie die Antwort auf meine Anwendung zutrifft. Ich habe eine Basisklasse mit mehreren abgeleiteten Klassen. Die Klassenmethoden sollten alle den gleichen Namen haben. Die Anwendung empfängt UDP-Nachrichten, die basierend auf dem Datagrammtyp unterschiedlich dekodiert werden müssen. Zum Beispiel, wie kann Decode in BaseDatagram gemacht werden, um Decode in DerivedDatagramA oder DerivedDatagramB aufzurufen?So rufen Sie die abgeleitete Methode von der Basis
class DerivedDatagramA: public BaseDatagram
{
...
};
class DerivedDatagramB: public BaseDatagram
{
...
};
void BaseDatagram::Decode(uint8_t * buffer)
{
switch(buffer[DATAGRAM_TYPE])
{
case DATAGRAM_TYPE_A:
Decode(buffer); // How to call decode in DerivedDatagramA?
break;
case DATAGRAM_TYPE_B:
Decode(buffer); // How to call decode in DerivedDatagramB?
break;
Sie wollen hier keine Vererbung (und Sie wollen es auf eine andere Weise). Make 'BaseDatagram ein Dispatcher für Datagramme (als BaseDatagram ist kein Datagramm mehr). –