Подкиньте идею как построить класс
От: ingvarwolf Канада  
Дата: 22.05.04 02:53
Оценка:
Всем привет!
У меня программа обменивается с другой программой сообщениями по сетке. Сообщения различаются между собой по типу, все типы заданы как:
#define MSG_READY    0x0001
#define MSG_ERROR    0x0002
#define MSG_DATASENT 0x0003

Так вот, некоторые сообщения не несут никакой дополнительной информации, кроме своего типа (например как MSG_READY, MSG_ERROR из списка вверху), но некоторые сообщения также передают и дополнительную информацию, (MSG_DATASENT). Вот эти дополнительные данные могут быть целым числом (int), дробным числом (double), строкой(std::wstring). Я сначала устроил это так:
/// Тип значения, хранящегося в сообщении
typedef enum Msgval_tag {
    mvtInt,
    mvtDouble,
    mvtString,
    mvtNoVal
} EnValType;

/// Само значение, хранящееся в сообщении
typedef union Msgvalue {
    int n;
    double d;
    wchar_t ws[1024];
} UnValType;

/// Класс сообщения
class Message {
    public:
        DWORD m_dwType;
        EnValType m_enValType;
        UnValType m_unValue;
};

Но что-то мне не сильно нравится вариант с union. Может у кого-то была похожая ситуация — поделитесь идеями... Или может даже не стоит пытаться сделать один класс для хранения значений разного типа?
Или я в принципе не в ту сторону копаю и обмен сообщениями делается гораздо более по-другому?
Спасибо.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.