Comment créer un tableau dynamique d'une classe Abstraite?
Permet de dire que j'ai une classe abstraite Chat qui a un peu de béton sous-classes chat Sauvage, Chat, etc.
Je veux que mon tableau pour être en mesure de stocker des pointeurs vers un type de chat sans savoir qui il est vraiment.
Lorsque j'essaie d'allouer dynamiquement un tableau de Chat, il ne semble pas fonctionner.
Cat* catArray = new Cat[200];
OriginalL'auteur 101010110101 | 2010-04-27
Vous devez vous connecter pour publier un commentaire.
Par la création d'un aray de pointeurs pour Chat, comme dans
Maintenant vous pouvez mettre votre chat Sauvage, Chat etc instances à divers endroits dans le tableau par exemple
Couple de mises en garde, lorsqu'il est fait
a) Ne pas oublier de supprimer les instances alloués dans catArray comme en supprimer catArray[0] etc.
b) Ne pas oublier de supprimer le catArray lui-même à l'aide de
Vous devriez également envisager l'utilisation de vecteur pour automatiser b) pour vous
OriginalL'auteur
Vous avez besoin pour créer un tableau de pointeurs
Cat
:Même si la classe de base
Cat
était en béton, vous auriez encore à courir tête baissée dans objet de découpage si vous avez créé un tableau deCat
.Notez que vous devriez probablement utiliser un
std::vector
au lieu d'un tableau, et devrait probablement utiliser des pointeurs intelligents pour assurer votre code à l'exception coffre-fort.OriginalL'auteur
Vous ne pouvez pas arrondir les chats en fixe la taille des cages, parce que le compilateur n'a aucun moyen de savoir comment grand les chats, ni de (métaphore de l'échec) comment les initialiser. Vous allez avoir besoin de faire quelque chose comme l'initialiser à null chat-pointeurs ou quelque chose, et le troupeau plus tard.
OriginalL'auteur
Vous ne peut pas instancier directement une instance d'une classe abstraite, mais doit, au contraire, instancier un exemple de la mise en oeuvre intégrale de sous-classe.
Donc c'est légal:
et puis vous pouvez accéder à chaque chat par le Chat de l'interface
Mais le compilateur n'a aucun moyen de savoir comment instancier une classe abstraite; en effet, le fait même qu'il est abstrait signifie qu'il ne peut pas être directement instancié.
Pourquoi faire cela? Parce que le Chat va avoir une méthode abstraite
Que tous hérité de chats doivent mettre en œuvre. Ensuite, vous pouvez demander s'il peut miauler, avec la chance qu'une instance de Lion sera de retour faux.
OriginalL'auteur