Je trouve que l'une des erreurs de compilation les plus fastidieuses pour moi est "impossible d'instancier une classe abstraite", car le problème est toujours que je n'avais pas l'intention que la classe être abstrait et le compilateur ne liste pas les fonctions qui sont abstraites. Il doit y avoir une façon plus intelligente de les résoudre que de lire les en-têtes 10 fois jusqu'à ce que je remarque finalement un "const" manquant quelque part. Comment résolvez-vous ces problèmes?Méthode de résolution d'erreur: "impossible d'instancier une classe abstraite"
Répondre
C++ vous indique exactement quelles fonctions sont abstraites, et où ils sont déclarés:
class foo {
virtual void x() const = 0;
};
class bar : public foo {
virtual void x() { }
};
void test() {
new bar;
}
test.cpp: In function ‘void test()’:
test.cpp:10: error: cannot allocate an object of abstract type ‘bar’
test.cpp:5: note: because the following virtual functions are pure within ‘bar’:
test.cpp:2: note: virtual void foo::x() const
Alors peut-être essayer de compiler votre code avec C++, ou indiquez votre compilateur pour que les autres peuvent donner des suggestions utiles pour votre compilateur spécifique.
cannot instantiate abstract class
Sur la base de cette erreur, je suppose que vous utilisez Visual Studio (puisque c'est ce que Visual C++ dit lorsque vous essayez d'instancier une classe abstraite). Regardez la fenêtre de sortie de Visual Studio (View => Output);
la sortie devrait inclure une déclaration après l'erreur indiquant:
stubby.cpp(10) : error C2259: 'bar' : cannot instantiate abstract class
due to following members:
'void foo::x(void) const' : is abstract
stubby.cpp(2) : see declaration of 'foo::x'
(C'est l'erreur donnée pour le code exemple de bdonlan)
Dans Visual Studio, la fenêtre « Liste d'erreurs » affiche uniquement la première ligne d'un Message d'erreur.
C++ Builder vous indique quelle méthode est abstraite:
class foo {
virtual void x() const = 0;
};
class bar : public foo {
virtual void x() { }
};
new bar;
[BCC32 Error] File55.cpp(20): E2352 Cannot create instance of abstract class 'bar'
[BCC32 Error] File55.cpp(20): E2353 Class 'bar' is abstract because of 'foo::x() const = 0'
- 1. BareMessage = "Impossible de créer une classe abstraite."
- 2. Pourquoi une classe abstraite devrait-elle implémenter une méthode abstraite d'une classe de base abstraite?
- 3. méthode abstraite dans une classe virtuelle
- 4. Méthode vide dans une classe abstraite
- 5. En utilisant une méthode d'une classe abstraite
- 6. Routage de formulaire Web - Impossible de créer une classe abstraite
- 7. Impossible de créer une instance de classe abstraite
- 8. Impossible d'instancier une classe ou une interface abstraite: problème persistant
- 9. Méthode partielle à l'intérieur Classe abstraite (C#)
- 10. iPhone - méthode d'initialisation d'une classe abstraite
- 11. mockForConstraintsTests classe abstraite groovy
- 12. Quand j'ai une classe abstraite, puis-je laisser une autre classe abstraite l'étendre?
- 13. MATLAB aide contenu pour une méthode abstraite
- 14. C# abstraite méthode Dispose
- 15. Dériver la classe abstraite de la classe non abstraite
- 16. référence abstraite de classe
- 17. Spécification du type de retour d'une méthode abstraite d'une classe de base selon une sous classe
- 18. Jmockit exemple classe abstraite
- 19. résolution de méthode Comparer
- 20. classe de base abstraite quartz.net
- 21. méthode abstraite héritée La surcharge
- 22. kohana 3 - classe d'image et erreur "Impossible d'instancier l'image de classe abstraite"
- 23. Comment implémenter une classe abstraite en F #?
- 24. Résolution de méthode d'extension
- 25. classe virtuelle en classe abstraite
- 26. Héritage d'une classe héritant d'une classe abstraite
- 27. Comportement étrange avec la méthode paramétrée sur la classe abstraite
- 28. PHP classe avec interface et erreur sur la méthode abstraite
- 29. La classe de contrat doit être une classe abstraite
- 30. Ajouter un aspect à une méthode abstraite?
compilateur? – Naveen
Certains compilateurs * DO * mentionnent quelle (s) méthode (s) a rendu la classe abstraite lorsque l'erreur d'instanciation se produit. –