Этот вопрос, возможно, является дубликатом this, но я не понимаю, как ответ применяется к моему приложению. У меня есть базовый класс с несколькими производными классами. Методы класса должны иметь одинаковое имя. Приложение получает сообщения UDP, которые необходимо декодировать по-разному на основе типа датаграммы. Например, как можно декодировать в BaseDatagram вызов декодирования в DerivedDatagramA или DerivedDatagramB?Как вызвать производный метод из базы
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;
Вам не нужно наследование здесь (и вы хотите его по-другому). Make' BaseDatagram диспетчер для датаграмм (Than BaseDatagram больше не является датаграммой). –