Syntaxe
Le message d'erreur de notre erreur est le suivant:
Erreur: Impossible de déclarer la variable "être de type abstrait"Notez que dans les parenthèses vides, il y aura des noms de classe variables et abstraits.
Erreur C2259: «État»: Impossible d'instancier la classe abstraiteCeci est un autre message que nous recevons du compilateur lorsque nous rencontrons une telle erreur.
Exemple # 01:
Pour rendre cette erreur compréhensible, nous effectuerons un exemple dans lequel nous écrirons notre code de telle manière que nous obtenons une erreur. À cette fin, nous avons initialisé une classe avec le nom «Shapeclass». Pour rendre cette classe abstraite, nous avons déclaré une fonction virtuelle avec le nom «getarea». Nous avons également déclaré deux autres fonctions avec les noms «SetWidth» et «Setheight» respectivement. Ce que nous voulons faire ici, c'est que nous voulons obtenir la hauteur en tant que paramètre et largeur comme paramètre d'entrée. Nous allons calculer la zone à l'aide de nos paramètres d'entrée. Nous avons créé une instance de notre classe dans la méthode principale. À l'aide de cet objet, nous avons appelé les méthodes et nous passerons les paramètres d'entrée via ces méthodes. Après cela, nous avons imprimé notre sortie pour vérifier les résultats.
#inclureLe système nous a donné une erreur après l'exécution de notre code. Le message d'erreur indique que nous ne pouvons pas déclarer la variable «sh» comme de type abstrait «Shapeclass». Maintenant, le compilateur essaie de transmettre que «Shapeclass» est un type abstrait et nous ne pouvons pas déclarer sa variable. Donc, avec le message, nous pouvons clairement comprendre que le compilateur ne nous laisse pas instancier notre classe abstraite, c'est pourquoi le système nous donne l'erreur.
Pour résoudre l'erreur, nous avons déclaré un autre «rectangle» de classe. Cette classe sera la classe d'enfants de notre classe abstraite et nous déclarerons le corps de notre fonction virtuelle dans cette classe. Après cela, nous créerons son objet dans la méthode principale et avec l'aide de son objet, nous appellerons les fonctions.
Après les modifications, nous avons fait notre code et nous avons maintenant réussi à exécuter notre code. Le système a exécuté notre code sans donner d'erreurs. Nous pouvons voir dans la sortie que le système a calculé la zone d'un rectangle et imprimé la sortie. Nous avons appris que notre erreur était que nous appelions directement l'objet de notre classe abstraite qui était la mauvaise approche. Quand nous avons appelé l'objet de sa classe d'enfants, notre code a commencé à bien fonctionner.
Exemple # 02:
Dans cet exemple, nous ne ferons aucun calcul mathématique. Cet exemple est un exemple générique qui nous aidera à comprendre les classes abstraites et comment le compilateur s'exécute entre les méthodes et les classes lors de l'exécution du code. Dans cette classe, nous avons créé une classe abstraite et l'avons nommée «Absclass». Nous avons déclaré une autre classe de «classe d'enfants» mais celle-ci n'est pas une classe abstraite. Cette classe est dérivée de notre classe abstraite.
Nous avons imprimé la «valeur passée à l'aide d'un objet» dans une méthode déclarée dans la classe abstraite. Le nom de la fonction est «ValueFunc». Comme nous l'avons discuté, le corps de la fonction virtuelle est déclaré dans la classe enfant. Dans notre classe d'enfants, nous avons imprimé «en fonction virtuelle» dans notre corps de fonction virtuelle. Maintenant, nous allons passer une valeur à notre fonction de valeur et voir si la valeur atteinte est correcte. Dans notre méthode principale, nous avons créé une instance de notre classe abstraite et avec l'aide de l'instance, nous appellerons nos fonctions virtuelles et autres. Maintenant, nous allons exécuter notre code.
#inclureAprès l'exécution de notre code, nous obtiendrons une erreur. Cette erreur est essentiellement que nous ne pouvons pas instancier une classe abstraite que nous essayons de faire ici dans notre méthode principale. Une chose à noter ici est que le type variable et abstrait de notre message a été modifié.
Maintenant, nous allons essayer de supprimer notre erreur et d'exécuter notre code. À cette fin, nous créerons l'objet de notre classe d'enfants et ferons son instance. Avec l'aide de cette instance, nous appellerons à la fois la méthode virtuelle et une autre méthode de notre classe abstraite. On observera également si nous pouvons accéder à la fonction virtuelle en utilisant la classe infantile ou non. Si nous réussissons à le faire, nous pouvons dire que nous avons accédé à la classe abstraite en utilisant sa classe dérivée.
Lors de l'exécution de notre code, le compilateur n'a pas lancé aucune erreur cette fois. Au lieu de cela, le système a compilé notre code avec succès et nous a donné la sortie. Maintenant, jetons un coup d'œil à la sortie. Le système a imprimé la «valeur passée à l'aide de l'objet» et «5» contre elle. Parce que nous avons passé 5 en utilisant notre instance dans la méthode principale. Après cela, il a imprimé la ligne que nous lui avons demandé dans notre fonction virtuelle.
Conclusion
Dans ce guide, nous avons discuté de la rencontre des programmeurs d'erreurs critiques tout en codant et en pratiquant des concepts orientés objet. Ces types d'erreurs se produisent souvent lorsqu'un programmeur traite des classes abstraites. L'article entier résume que les classes abstraites ne peuvent pas être instanciées, et nous ne pouvons pas y faire des méthodes d'appel d'objets. Nous avons également essayé différents exemples pour créer des erreurs, puis nous avons résolu les erreurs de notre code.