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é:
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.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
 
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;
};
CameraProxy.cpp :
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
}
J'ai à peu près la même chose dans la fabrique (elle fait appel aux méthodes du proxy en fait)

Au final, ce friend CameraProxy, ça vous choque ou pas ?