Re: authoriser / interdire l'acces aux methodes d'une classe
Bigre les gens, j'ai l'impression que vous tentez de mettre un cataplasme sur une jambe de bois... C'est une bête question de design, et le singleton n'est pas la réponse, je pense !!
Citation:
Envoyé par buzzz
J'ai un driver de peripherique stocké dans une classe : Driver
Bon, et ce driver est unique, c'est une ressource
Citation:
Envoyé par buzzz
[...]
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 ---
Moi ça me semble tout bon, si tu est sûr qu'on ne peut pas préempter pendant l'excution de Truc() ou Machin()...
Citation:
Envoyé par buzzz
il suffit d'ecrire :
Code:
1 2 3 4
| int key = DM::GetKey();
Driver * t = DM::Driver(key)
t->Truc()
t->Bidule() |
alors qu'en sauvegardant l'acces dans une variable
ce n'est pas verifié et le peripherique va peter
Et bien il suffit que celà soit impossible.
Code:
1 2 3 4 5 6 7
|
class DM {
...
static void Truc(int key);
static void Bidule(int key);
...
}; |
Les fonction s'occupe de vérifier la validité de la clé, et exécute la fonction voulue si OK.
Citation:
Envoyé par buzzz
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
Oui, si c'est une classe de confience, un protected friend qui à accès à la méthode qui retourne un Driver*
Fais gaffe aux interblocages !