J'essaie de comprendre s'il existe un moyen de définir une directive include pour une classe de base tout en étant capable d'accéder aux classes dérivées qui sont définies dans un en-tête différent de celui de la classe de base. Par exemple :
Dans GenericObject.h :
class GenericObject {
/* whatever - shared properties and methods implemented in .cpp file */
}
Dans Ball.h :
class Ball : public GenericObject {
/* whatever - implementation details are in the .cpp file */
}
Maintenant, dans un autre fichier d'implémentation (appelons-le main.cpp), j'ai #include
d "GenericObject.h"
. Dans main.cpp, je veux pouvoir accéder aux membres de la classe GenericObject ainsi qu'à la classe Ball et à toute autre classe dérivée de GenericObject. D'après mes essais jusqu'à présent, le compilateur ne reconnaîtra pas l'identifiant Ball si j'essaie de le déclarer de la manière suivante Ball * b;
et donc tous les membres qui appartiennent à sa classe.
Est-ce parce que mon #include
'd "GenericObject.h"
n'est pas également en train de relier qu'il y a cette classe Ball dérivée à laquelle je peux accéder ? Je peux identifier et utiliser correctement la classe Ball si je "#include "Ball.h"
mais je n'imagine pas que je doive inclure tous les fichiers d'en-tête des classes dérivées de la classe GenericObject, n'est-ce pas ?
Si je devais deviner comment cela pourrait fonctionner, je dirais que quelque chose comme une déclaration de prototype pour la classe Ball à l'intérieur de la classe GenericObject serait un pas dans la bonne direction, mais je ne suis pas sûr qu'un prototype de classe soit même une chose.
Merci à tous pour votre lecture et vos commentaires !