У меня есть очередь (здесь для упрощения: только одна переменная), содержащая различные виды сообщений.
InboxMessage inbox_queue_;
Несколько потоков / классов могут записывать сообщения в эту очередь. Класс-потребитель читает их и обрабатывает в зависимости от типа прочитанного сообщения.
class StatusMessage : public InboxMessage {
public:
std::string getStatus();
std::string getTimestamp();
// ...
};
class RandomMessage : public InboxMessage {
public:
std::string getCode();
int getCount();
// ...
};
Производные классы содержат различные виды атрибутов, к которым необходимо обращаться при обработке сообщения.
Мой вопрос таков: есть ли способ избежать принижения класса потребителей в этом сценарии? Следует ли этого избегать любой ценой (если да, то как?).
Я использую dynamic_cast, чтобы убедиться, что программа проверяет, является ли приведение действительным, и могу ли я реагировать на неудачные приведения.
Заранее спасибо!