Salut à tous,
J'ai juste une petite question qui me dérange... Dans ma conception j'utilise un pattern Proxy. Mon proxy se contente, comme tout bon Proxy de renvoyer l'info vers le "vrai" objet, en ajoutant son petit quelque chose. Là il se trouve que les fonctions surchagées par mon proxy sont protected. Alors il ne peut pas simplement accéder à l'objet stocké par composition.
Camera.h simplifié:
CameraProxy.h:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 class Choc; class CameraProxy; struct FabriqueCameraIR; class Camera { public: friend CameraProxy; // Déclaration FRIEND obligatoire friend FabriqueCameraIR; Camera(Choc & choc, std::string nomCamera); virtual ~Camera() {} // Fonctions d'accès aux images image_type LoadImageByNumber(int number); image_type LoadImageByTime (double time); image_type LoadLastImage () const {return m_Image;} protected: // A implémenter dans les classes Filles virtual void ImportImage(int numero) = 0; virtual void CalculateNumberImages(void) = 0; virtual void Initialisation () {} };
CameraProxy.cpp :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 class CameraProxy : public Camera { public: CameraProxy(Camera * camera); virtual ~CameraProxy() {} virtual void ImportImage(int numeroImage); virtual void CalculateNumberImages(); virtual void Initialisation(); private: Camera * m_Camera; static boost::mutex m_Mutex; };
J'ai à peu près la même chose dans la fabrique (elle fait appel aux méthodes du proxy en fait)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 void CameraProxy::ImportImage(int numeroImage) { // On transmet l'appel en sécurisant le réseau boost::mutex::scoped_lock locker( m_Mutex ); return m_Camera->ImportImage(numeroImage); // Méthode PROTECTED }
Au final, ce friend CameraProxy, ça vous choque ou pas ?
Partager