Je veux créer un objet ab de la classe de base Foo
qui initialise la value
variable quelque chose que je décide, je veux ensuite créer un objet de la classe dérivée Bar
et la valeur de la variable que je décidais Les premiers bâtons avec Foo
héritent de Bar
, comme une initialisation constante une fois pour la valeur de la variable.Initialisation de la valeur de classe de base pour la classe dérivée
Y at-il un moyen de le faire sans passer la valeur chaque fois que je crée l'objet Bar
comme avec l'objet Foo
ou que la valeur de la classe est définie par défaut à 5?
Exemple:
// Base class
class Foo {
private:
int value;
public:
Foo() {}
Foo(int value) : value(value) {}
int getValue() { return value; }
};
// Derived class
class Bar : public Foo {
private:
public:
Bar() {}
};
Foo foo(5);
foo.getValue() // 5
Bar bar;
bar.getValue() // this I also want to be 5 now
Si je comprends bien votre objectif, il semble condamné. Vous n'héritez pas d'un objet/instance de classe de base, vous héritez de la classe de base, la classe ne connaît pas la valeur d'une variable membre d'un objet existant. Est-ce que stocker une référence à l'objet que vous essayez "d'hériter" aide à atteindre ce que vous voulez? – Yunnosch
Votre exigence consiste à implémenter un effet de bord dans la construction de la classe de base qui affecte toutes les constructions de classes dérivées suivantes. C'est déroutant, c'est le moins qu'on puisse dire. Faire cela dans un style orienté objet est possible. Vous pouvez écrire une classe de fabrique avec un constructeur acceptant la valeur de la variable. Les objets créés par l'usine seront créés avec cette valeur. –