desiging generic message class
I'm having a problem designing a generic message class to be used in a mailbox like system.
What I want is have a baseclass 'Message' with a certain interface and subclasses define their own data which can be retreived through that interface. But I dont know how...
Something like:
Code:
class Message
{
// ????
};
class ConcreteMessage : public Message
{
public:
// override function "????"
private:
int x;
short y;
};
Then there is one function
Code:
void HandleMessage(Message &message)
{
message.Parse(); // how to get the int and short here?
}
I hope I'm being clear. Is there something that can be done in a generic way without reverting to something like:
Code:
void HandleMessage(Message &message)
{
if (message.type() == INT_SHORT)
{
try {
ConcreteMessage &mymessage = dynamic_cast<ConcreteMessage &>(message);
int x = mymessage.get_int();
short s = mymessage.get_short();
}
catch (std::bad_cast &e) {}
}
}