История изменений
Исправление tailgunner, (текущая версия) :
Вот как оно сейчас:
Это только маленький и маловажный кусочек того, что есть. Релевантны только 2 строки:
QList <IrkutAnswer> answers;
Это означает, что ты зачем-то натянул один класс на все ответы устройства (очень разные, как я подозреваю). Зачем ты это сделал? Я бы описал каждый пакет Си-структурой, а для списка пакетов использовал указатель на union всех пакетов (C style) или boost::variant указателей на пакеты. Ах да, и не использовал бы Qt ни для чего, кроме GUI.
IrkutAnswer(mSocket, mLastCommandDateTime)
Это означает, что у твоего мегакласса есть конструктор, читающий сокет и создающий объект из прочитанных данных. Опять же - зачем? Читаешь данные, проверяешь их, и, если проверка пройдена, делаешь из _области памяти_ объект (тупым преобразованием void * в указатель на нужный тип).
код писался в адовой спешке, т.к. на горизонте мельтешила анальная кара от заказчика.
Некоторые вещи должны делаться автоматически.
Исходная версия tailgunner, :
Вот как оно сейчас:
Это только маленький и маловажный кусочек того, что есть. Релевантны только 2 строки:
QList <IrkutAnswer> answers;
Это означает, что ты зачем-то натянул один класс на все ответы устройства (очень разные, как я подозреваю). Зачем ты это сделал? Я бы описал каждый пакет Си-структурой, а для списка пакетов использовал указатель на union всех пакетов (C style) или boost::variant указателей на пакеты. Ах да, и не использовал бы Qt ни для чего, кроме GUI.
IrkutAnswer(mSocket, mLastCommandDateTime)
Это означает, что у твоего мегакласса есть конструктор, читающий сокет и создающий объект из прочитанных данных. Опять же - зачем? Читаешь данные, проверяешь их, и, если проверка пройдена делаешь из _области памяти_ объект (тупым преобразованием void * в указатель на нужный тип).
код писался в адовой спешке, т.к. на горизонте мельтешила анальная кара от заказчика.
Некоторые вещи должны делаться автоматически.