Всем привет.
Есть довольно простая проблемка, но что-то клинит меня после праздников. Имею: надо передавать, скажем, 20 типов сообщений между двумя программами. Для каждого сообщения создам класс, в котором будет поле struct Message, которое для каждого класса содержит так сказать уникальные данные, которые будут посылаться и приниматься. В каждом классе есть 2 метода, которые существуют в каждом классе и в каждом классе абсолютно одинаковы, но работают, естесственно с данными своего класса. Что-то типа:
class CStartStatus : public CBaseIpcMessage
{
public:
enum Status
{
START_OK = 0,
START_PROBLEM_MOUNT_CONF_DATA,
START_PROBLEM_TOUCH_SCREEN,
};
struct Message
{
enum MsgId id;
enum Status status;
};
public:
CStartStatus();
void* getMesDump( int& len );
eError decodeMessage( struct nlmsghdr *nlh );
protected:
struct Message m_message;
}
////////////////////////////////////////////////////
CStartStatus::CStartStatus()
{
m_message.id = ID_IPC_START_STATUS;
m_message.status = START_OK;
}
////////////////////////////////////////////////////
void* CStartStatus::getMesDump( int& len )
{
len = sizeof( m_message );
return &m_message;
}
////////////////////////////////////////////////////
eError CStartStatus::decodeMessage( struct nlmsghdr *nlh )
{
if( nlh->nlmsg_len - sizeof( nlmsghdr ) != sizeof( m_message ) )
{
return ERR_WRONG_REC_MES_LENGTH;
}
memcpy( &m_message, NLMSG_DATA( nlh ), sizeof( m_message ) );
return ERR_OK;
}
Подскажите, как сделать так, чтоб getMesDump() и decodeMessage() объявить один раз и не такскать из класса в класс. Просто объявить в базовом классе не получится, поскольку методы работают с данными известными только в производных классах...
Всем спасибо
Velik
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от Tark
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от Tark
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от arsi
Ответ на:
комментарий
от Obey-Kun
Ответ на:
комментарий
от elverion
Ответ на:
комментарий
от Obey-Kun
Ответ на:
комментарий
от Obey-Kun
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от JFreeM
Ответ на:
комментарий
от velikS
Ответ на:
комментарий
от JFreeM
Ответ на:
комментарий
от velikS
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.
Похожие темы
- Форум Взаимодействие userspace и kernel-space через netliink сокеты (2010)
- Форум Netlink (в консольном приложении работает, в GUI - нет) (2013)
- Форум Получение списка интерфейсов через netlink (2013)
- Форум BOOST thread не понимаю ... (2011)
- Форум mmap из ядра в приложение. (2011)
- Форум Networking -> netlink/rtnetlink -> routing (2018)
- Форум Ошибка: undefined reference to 'shm_unlink' (2010)
- Форум 2 потока по ethernet одновременно (2011)
- Форум rtnetlink уведомить пользователя (2016)
- Форум проблема с объявление константных функций в Си++ (2010)