Система отправляет предупреждающие сообщения xml. Чтобы поместить файл xml вместе, был создан класс, чтобы предупреждение могло быть сгенерировано до его перевода в xml. Каждое сообщение должно иметь уникальный идентификатор. Насколько это уникально? Идентификаторы идут от 3400 до 3500. Если максимум достигнут, идентификатор сбрасывается.Уникальный идентификатор отправленных сообщений в хорошей практике программирования
#ifndef WARNINGMESSAGE_H
#define WARNINGMESSAGE_H
#include <ctime>
static unsigned int control_ID = 3399;
//Effect Codes:
const unsigned int TRAFFIC_FREE = 2;
//(...)
class WarningMessage{
public:
//setters
void setActionID();
//getters
//(...)
private:
unsigned int actionID; //to be controlled by control_ID
};
#endif // WARNINGPARAMVEHICLE_H
И в файле CPP, когда идентификатор сообщения должен быть выставиться, следующий выполняется:
#include "project/include/warningmessage.h"
//setters
void WarningParamVehicle::setActionID(){
if(control_ID == 3500){
control_ID = 3399;
}
control_ID++;
actionID = control_ID;
}
Еще одна деталь, которая имеет важное значение, пространство в памяти для этого класса сообщений дается только один раз. Каждый раз, когда одно сообщение должно быть отправлено, экземпляр будет удален и создан заново, как, например:
void WarningDetector::createWarning(){
delete currentWarningMessage; // delete previous warning instance
currentWarningMessage = new WarningMessage();
(...)
}
и, наконец, currentWarningMessage был объявлен в детекторе предупреждения как указатель:
WarningMessage* currentWarningMessage;
Я могу заметить плохая практика программирования при объявлении переменной control_ID в файле заголовка и за пределами области видимости, однако, данная сценарическая кодировка, подобная этому оптимизированному взгляду. Есть ли лучший способ решить эту проблему с уникальным идентификатором? Большое спасибо заблаговременно
«плохая практика программирования в объявлении переменной control_ID в файле заголовок и вне сферы класса» --- так, как о поместив переменную в область класса? – tenfour
Если у вас есть класс WarningDetector для создания предупреждений, почему бы вам не поместить control_ID внутри этого класса, и вместо того, чтобы иметь setActionID, просто передайте id в конструкторе. new WarningMessage (nextId) –
BTW, в настоящее время у вас есть один 'control_ID' на единицу перевода, включая заголовок:/ – Jarod42