Classe de base abstraite pour tous les éléments interactifs ferroviaires.
Définit l'interface commune que chaque élément interactif doit implémenter.
Règles de copie / déplacement :
- Copie interdite : évite le slicing et la duplication accidentelle.
- Déplacement autorisé : nécessaire au pipeline de construction (TopologyExtractor, make_unique, etc.).
Logger statique partagé par TOUS les éléments interactifs.
Une seule instance pour l'ensemble des SwitchBlock et StraightBlock → un seul fichier "Logs/Elements.log".
Statique : initialisé une seule fois au démarrage, partagé par toutes les instances de toutes les classes dérivées. Le mutex interne du Logger garantit la thread-safety des écritures concurrentes.
Utilisation dans les classes dérivées :
#define LOG_INFO(logger, message)
Definition Logger.h:67
std::string m_id
id de l'element
Definition Element.h:71
static Logger m_logger
Logger statique partagé par TOUS les éléments interactifs.
Definition Element.h:88
Définition de l'unique instance du logger partagé. Produit le fichier "Logs/Elements.log".