J'ai converti certaines de mes classes de mathématiques en modèles et d'utiliser des listes d'initialisation, et je rencontre un problème lorsque la classe héritée doit accéder aux membres de la classe de base à l'initialisation.C++ Classes et listes d'initialisation héritées
Voici le code:
template <typename T>
struct xCoord2
{
T x;
T y;
xCoord2(T _x, T _y) : x(_x), y(_y) {};
};
template <typename T>
struct xCoord3 : xCoord2<T>
{
typedef xCoord2<T> B;
T z;
// All Error
xCoord3(T _x, T _y, T _z) : x(_x), y(_y), z(_z) {};
xCoord3(T _x, T _y, T _z) : B::x(_x), B::y(_y), z(_z) {};
xCoord3(T _x, T _y, T _z) : this->x(_x), this->y(_y), z(_z) {};
// Works
xCoord3(T _x, T _y, T _z) { B::x = 0; B::y = 0; z = 0; };
};
Est-il possible d'utiliser des listes d'initialisation des classes héritées?
Un 'xCoord3' est-il vraiment un' xCoord2'? Ou partagent-ils simplement certains membres de données? C'est un cas où l'héritage pourrait ne pas être une bonne idée s'il n'y a pas de relation is-a entre les deux classes. –
L'exemple est seulement une partie de chaque classe, mais l'héritage est très utile ici, car il permet d'effectuer des calculs entre les deux types. –