J'ai un driver de peripherique stocké dans une classe : Driver

J'ai une classe gestionnaire de periph appelée par les
differentes threads : DM

Un thread demande l'acces au driver et recoit une clef
qui l'identifie comme propriétaire

en cours de route la clef peut etre invalidée pcq un process
prioritaire a pris la main sur le driver

j'ai donc une fonction

Driver * DM(int key);

si la clef est valide le device manager renvoie le pointeur sur le driver
sinon il lance une exception

--- il me semble que ce systeme est correct en tout cas si vous avez meilleure idée !! je suis preneur ---

Mon probleme est le suivant, en cas d'export du code
et d'utilisation par une tierce personne pressée

il suffit d'ecrire :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
int key     = DM::GetKey();
Driver * t = DM::Driver(key)
t->Truc()
t->Bidule()
au lieu de

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
int key     = DM::GetKey();
DM::Driver(key)->Truc()
DM::Driver(key)->Bidule()
ou la si la fonction a perdu la main entre truc et bidule
DM peut lancer une exception

alors qu'en sauvegardant l'acces dans une variable
ce n'est pas verifié et le peripherique va peter

l'ideal serait que seul le device manager puisse activer la fonction
de maniere indirecte (il suffirait qu'il soit friend de Driver) mais je ne vois pas comment faire


[Balises CODE rajoutées par Loulou24, merci d'y penser à l'avenir]