Bonsoir à toutes et à tous,
J'ai un petit problème d'architecture, sans doute très simple à résoudre: j'ai une classe mère et une classe fille et chacune d'elles instancient un objet.
Mais ces objets diffèrent suivant que ce soit la classe mère ou la classe fille qui les instancie, exemple:
Je n'ai pas détaillé plus, mais des fonctions sont présentes dans Autre_Base et Autre_derived qui effectuent des calculs similaires mais avec des différences fondamentales.
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 //**************** Base Class **************** class Base { public: Base(int a1, int a2, int a3) :a{a1}, b{a2}, c{a3} { L = new Autre_Base(a1, a2); }; ~Base() { delete L; }; protected: int a, b, c; private: Autre_Base * L; }; //**************** Derived Class **************** class Derived: public Base{ public: Derived(int a1, int a2, int a3) :Base(a1, a2, a3) { L = new Autre_Derived(a1, a3); }; ~Base() {}; private: Autre_derived * L; }; //**************** Autre_Base Class **************** class Autre_Base { public: Autre_Base(int a1, int b1) :a{a1}, b{b1} {}; ~Autre_Base() {}; protected: int a, b; }; //**************** Autre_Derived Class **************** class Autre_Derived: public Autre_Base { public: Autre_Derived(int a1, int b1) :Autre_Base(a1, b1) {}; ~Autre_Derived() {}; };
D'autre part, si j'appelle le constructeur de 'Derived' qui appelle celui de la 'Base', l'objet 'L' est instancié 2 fois (une fois dans la Base et une fois dans la Derived)
Comment arranger cette structure (dois-je passer par une classe pure virtuelle?). Sachant que cette structure est légère mais instanciée intensivement (de l'ordre de 10^11 ou 10^12 fois environ).
Merci beaucoup pour vos conseils éclairés!
Partager