HelloMessage : public message{
string text = “hello”;
};
class AddValue : public message{
Int value;
};
queue<message>messageQueue;
Я знаю способы привести к базовому классу объект, но можно ли как то сделать наоборот?
Типо достать из очереди сообщение и проверить, к какому производному классу оно принадлежит?
Можно забахать поле енам messageId и проверять по нему, но так разве правильно?
можно, но это антипаттерн, так желать не следует (dynamic cast)
Можно через dynamic_cast, но хранить вы должны указатели
если нужно валидировать тип, то ты плохо архитектуру сделал. Твой код не должен знать о том, что у класса есть наследники, тогда следует просто отказаться от наследования (какой в нём смысл, просто передавай конкретные типы, ты же в итоге их и используешь)
Я пытался пример просто придумать, чтоб понятно было)
Обсуждают сегодня