Bonjour à tous,

Je me retrouve avec un projet où une classe A gère un tas d'objet de classe B utilisant une variable statique V.
La variable statique est déclarée dans B. Les fonctions de traitement associées à V sont dans B.
La classe A utilise les fonction de traitement associées à V.

Tout fonctionne mais le code est maintenant moche à lire.

Mon souci est que je souhaiterai déplacer les fonctions de traitement associées à V qui sont dans B ailleurs que dans B.
J'ai mon idée mais je souhaiterai avoir la votre.

Pour être plus clair, je schématise :

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
class B {
public :
 B(params);
 ~B();
 void fonctionDeTraitement1(params);
 void fonctionDeTraitement2(params);
 plein d'autres choses 
 ... 
 static creerV();
 static modifieV();
 static resetV();
 static updateV();
private:
 plein de variables distinctes
 ...
 static var V;
}
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
class A {
public:
 A(params);
 ~A();
 void fonctionDeTraitement1(params);
 void fonctionDeTraitement2(params);
 plein d'autres choses 
  ...
  accesCreerV();
  accesModifieV();
  accesResetV();
  accesUpdateV(); 
  ...
private:
  plein de variables
  ...
  B[150] mesB;
}
Les fonctions accesCreerV() sont des simples liens de genre B::creerV();

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
void A::accesCreerV() {
 B::creerV();
}
A n'a pas d'accès direct sur V

Ce que je souhaiterai c'est d'avoir

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
class B {
public :
 ...
private:
 ...
 static var V;
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
class C {
public:
 static creerV();
 static modifieV();
 static resetV();
 static updateV();
private:
 ...
}

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
class A {
public:
  ...
  accesCreerV();
  accesModifieV();
  accesResetV();
  accesUpdateV(); 
  ...
private:
  B[150] mesB;
}

Comment relier tout le monde entre eux ?


En vous remerciant par avance !