Bonjour,

J'ai un petit problème sur un code assez court, je tente de modifier (via un setter) des attributs de ma classe mère, mais la répercussion (vérification via un getter) ne semble pas se faire.
Il est évident que je fais mal quelque chose niveau code, ou même que ma compréhension de la logique POO Héritage doit être érronnée, pourriez vous me dire ou se situe le soucis ?

Merci d'avance à tous !

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
#include <iostream>
#include <vector>
 
using namespace std;
 
// Base class
class Shape {
   public:
      void setWidth(int w) {
         width = w;
      }
      void setHeight(int h) {
         height = h;
      }
      int get_width ()
      {
          return width;
      }
 
   protected:
      int width;
      int height;
};
 
// Derived class
class Rectangle: public Shape {
   public:
      int getArea() {
         return (width * height);
      }
};
 
int main(void) {
   Rectangle Rect;
 
   Rect.setWidth(5);
   Rect.setHeight(7);
 
   vector <Shape> shapes; // Je crée un vecteur de formes qui receuillera surement des triangles, losanges etc... Il servira a pouvoir être parcouru via une boucle quelque soit la forme contenue
   shapes.push_back(Rect);
 
   std::cout << shapes[0].get_width() << std::endl;
 
   Rect.setWidth(1000); // Modification de la width
 
   std::cout << shapes[0].get_width() << std::endl; // Le cout m'affiche 5 T_T
 
   return 0;
}