LINUX.ORG.RU

История изменений

Исправление 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 * в указатель на нужный тип).

код писался в адовой спешке, т.к. на горизонте мельтешила анальная кара от заказчика.

Некоторые вещи должны делаться автоматически.