Suivre l'exemple suivant:Comment puis-je initialiser les paramètres de super-classe à partir du C-Tor enfant en C++?
class A {
public:
A(int param1, int param2, int param3) {
// ...
}
};
class B : public A {
public:
B() : m_param1(1), m_param(2), m_param(3), A(m_param1, m_param2, m_param3) {
// ...
}
};
B b;
Il est évident que, lorsque « b » sera créé, le cteur de A sera appelé avant que les paramètres de B seront réinitialisés. Cette règle m'empêche de créer des classes «wrapper» qui simplifient l'initialisation de la classe.
Quelle est la «bonne façon» de le faire?
Merci, Amir
PS: Dans mon cas particulier, les paramètres ne sont pas primitives, cet exemple que m'a aidé à me expliquer.
Je comprends le problème. Cependant, cela ressemble à la duplication d'informations. Pourquoi seriez-vous dans une situation où vous devez initialiser à la fois «A» et «B» avec les mêmes paramètres? –
Plus précisément, j'utilise la bibliothèque de physique "Bullet", qui prend des pointeurs sur des objets en tant que paramètres. Je veux créer et stocker un objet dans la classe enfant et passer son pointeur à la superclasse. Par ce que je peux créer une classe de caractère qui hérite de la classe de "l'objet physique" de la bibliothèque. – Amir
Je ne suis pas sûr que je reçois la question, mais rappelez-vous une chose - les instructions de la liste d'initialisation ne s'exécutent pas dans l'ordre indiqué, elles sont exécutées dans les classes de base de commande et les variables membres dans la déclaration de classe. –