Bonjour,
Je suis en traine de developer une clase de base ( classe abstraite) pou heriter de ce classe deux classes types.
mon clase de base :
Jusqu'a la je n'ai pas de soucis tout va bien ; j'herite et je definis ma fonction fct4() qui differe d'une classe a l'autre.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 classe CBase { public : void fct1(); void fct2(); protected : void fct3(); void fct4() = 0 ; CBase() // afin d'initialiser des membres privées. private: socket_TCP socket_ // socket juste pour dire que je definis une socket }
Les deux fonctions public ( fct1 et fct2) utilise le membre privé socket_, jusqu'a la je n'ai pas de problemes.
Apres que j'ai developper une classe B qui herite de CBAse, je voulais heriter une deuxieme class C, et c'est la que j'ai vu que j'ai un probleme de conception :
Le classe B utilise un socket de type TCP (socket_TCP), alors que mon class C le type de scoket est SSL .
L'idée de faire de faire une classe de base et heriter parceque les deux classes B et C differe juste de la fonction virtuelle pure (fct4) , mais apres je me suis rendu comptes qu'il differe aussi de type de socket.
J'ai pensé a deux solutions :
1. De rendre mon class CBase template , dans ce cas mon classe CBase devient :
2. De changer completement le design, et de developper un seul class template et de specialiser la fonction fct4 (qui differe d'une classe a l'autre)
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
25
26
27
28 template <typename T> classe CBase { public : void fct1(); void fct2(); protected : void fct3(); void fct4() = 0 ; CBase() // afin d'initialiser des membres privées. private: T socket_ // socket juste pour dire que je definis une socket } //et puis : class B : public CBase <socket_TCP> { ..... }; class C : public CBAse <socket_SSL> { ..... };
Pouriez vous m'indiquer si j'ai le bon resolution, si non quelles sont vos suggerations ?
Merci en avance
Partager