Erreurs du compilateur C2500 à C2599
Les articles de cette section de la documentation décrivent un sous-ensemble de messages d’erreur générés par le compilateur.
Important
Les compilateurs et outils de génération Visual Studio peuvent signaler de nombreux types d’erreurs et d’avertissements. Une fois qu’une erreur ou un avertissement a été détecté, les outils de génération peuvent faire des hypothèses sur l’intention du code, et tenter de poursuivre leur tâche, pour signaler un plus grand nombre de problèmes en même temps. Si les outils suivent une hypothèse incorrecte, les erreurs ou avertissements ultérieurs peuvent ne pas s'appliquer à votre projet. Lors de la résolution de problèmes dans votre projet, démarrez toujours par la première erreur ou le premier avertissement signalé et effectuez régulièrement une régénération. Un seul correctif peut permettre d’éliminer de nombreuses erreurs à venir.
Pour obtenir de l’aide sur un message de diagnostic particulier dans Visual Studio, sélectionnez-le dans la fenêtre Sortie, puis appuyez sur la touche F1. Visual Studio ouvre la page de documentation relative à cette erreur, le cas échéant. Vous pouvez également utiliser l’outil de recherche en haut de la page pour rechercher des articles sur des erreurs ou des avertissements spécifiques. Vous pouvez également parcourir la liste des erreurs et des avertissements par outil et par type dans la table des matières de cette page.
Remarque
Les erreurs et les avertissements Visual Studio ne sont pas documentés en totalité. Dans de nombreux cas, le message de diagnostic fournit toutes les informations disponibles. Si vous êtes arrivé sur cette page quand vous avez utilisé F1, et si vous pensez que le message d’erreur ou d’avertissement nécessite une explication supplémentaire, faites-le nous savoir. Vous pouvez utiliser les boutons de commentaires de cette page pour signaler un problème de documentation sur GitHub. Si vous pensez que l’erreur ou l’avertissement est incorrect, ou si vous avez trouvé un autre problème relatif à l’ensemble d’outils, signalez un problème de produit sur le site Developer Community. Vous pouvez également envoyer des commentaires et entrer des bogues dans l’IDE. Dans Visual Studio, accédez à la barre de menus, puis choisissez Aide > Envoyer des commentaires > Signaler un problème, ou envoyez une suggestion via Aide > Envoyer des commentaires > Envoyer une suggestion. Certaines rubriques d’erreur du compilateur qui ne sont pas émises par le compilateur ont été créées et redirigent maintenant vers cette page à la place.
Vous trouverez peut-être une aide supplémentaire sur les erreurs et les avertissements dans les forums de Q&A Microsoft Learn. Vous pouvez également rechercher le numéro d’erreur ou d’avertissement sur le site Developer Community de Visual Studio C++. Vous pouvez également effectuer des recherches sur Stack Overflow pour trouver des solutions.
Pour obtenir des liens vers d’autres ressources d’aide et de communauté, consultez Aide et communauté Visual C++.
Messages d’erreur
Erreur | Message |
---|---|
Erreur du compilateur C2500 | 'identifier1' : 'identifier2' est déjà une classe de base directe |
Erreur du compilateur C2501 | 'identifier' : '__declspec(specifier)' ne peut s'appliquer qu'aux structs, unions, classes ou membres de champ de bit non signés |
Erreur du compilateur C2502 | 'identifier' : modificateurs d'accès sur la classe de base trop nombreux |
Erreur du compilateur C2503 | 'class' : les classes de base ne peuvent pas contenir de tableaux de taille zéro |
Erreur du compilateur C2504 | 'class' : classe de base non définie |
Erreur du compilateur C2505 | 'symbol' : '__declspec(specifier)' ne peut s'appliquer qu'aux déclarations ou définitions d'objets globaux ou de membres de données statiques |
Erreur du compilateur C2506 | 'member' : '__declspec(specifier)' ne peut pas être appliqué à ce symbole |
Erreur du compilateur C2507 | 'identifier' : modificateurs virtuels sur la classe de base trop nombreux |
Erreur du compilateur C2508 | 'identifier' : '__declspec(specifier1)' ne peut pas être combiné à '__declspec(specifier2)' |
Erreur du compilateur C2509 | 'identifier' : fonction membre non déclarée dans 'class' |
Erreur du compilateur C2510 | 'identifier' : la classe/struct/union doit figurer à gauche de '::' |
Erreur du compilateur C2511 | 'identifier' : impossible de trouver la fonction membre surchargée dans 'class' |
Erreur du compilateur C2512 | 'identifier' : aucun constructeur par défaut approprié disponible |
Erreur du compilateur C2513 | '*type' : aucune variable déclarée avant '=' |
Erreur du compilateur C2514 | 'class' : la classe n'a aucun constructeur |
Erreur du compilateur C2515 | 'identifier' : 'vtguard' ne peut s'appliquer qu'aux définitions ou déclarations de classe |
Erreur du compilateur C2516 | 'class' : classe de base non légale |
Erreur du compilateur C2517 | 'identifier' : la partie à droite de '::' n’est pas définie |
Erreur du compilateur C2518 | mot clé 'keyword' illégal dans la liste de classes de base ; ignoré |
Erreur du compilateur C2519 | 'identifier' : les attributs WinRT ne peuvent contenir que des champs publics |
Erreur du compilateur C2520 | 'class' : aucun constructeur non explicite disponible pour la conversion implicite |
Erreur du compilateur C2521 | un destructeur/finaliseur n'accepte pas d'arguments |
Erreur du compilateur C2522 | 'identifier' : impossible d'utiliser l'identificateur de surcharge pour 'identifier1', car il est déjà spécifié pour 'identifier2' |
Erreur du compilateur C2523 | 'class::~identifier' : incohérence de balise destructeur/finaliseur |
Erreur du compilateur C2524 | 'identifier' : un destructeur/finaliseur doit avoir une liste de paramètres 'void' |
Erreur du compilateur C2525 | 'identifier' : le paramètre 'identifier1' est nommé 'identifier2' sur la fonction de base et doit avoir une correspondance dans une implémentation publiée |
Erreur du compilateur C2526 | 'identifier1' : une fonction de liaison C ne peut pas retourner de classe C++ 'identifier2' |
Erreur du compilateur C2527 | 'identifier' : DefaultOverload ne peut pas être spécifié à la fois sur 'function1' et 'function2'. Supprimer une spécification ou renommer la fonction pendant l’implémentation |
Erreur du compilateur C2528 | 'identifier' : le pointeur vers la référence est illégal |
Erreur du compilateur C2529 | 'identifier' : la référence à la référence est illégale |
Erreur du compilateur C2530 | 'identifier' : les références doivent être initialisées |
Erreur du compilateur C2531 | 'identifier' : référence illégale à un champ de bit |
Erreur du compilateur C2532 | 'identifier' : modificateur illégal pour la référence |
Erreur du compilateur C2533 | 'identifier' : type de retour non autorisé pour les constructeurs |
Erreur du compilateur C2534 | 'identifier' : le constructeur ne peut pas retourner de valeur |
Erreur du compilateur C2535 | 'identifier' : fonction membre déjà définie ou déclarée |
Erreur du compilateur C2536 | Obsolète. |
Erreur du compilateur C2537 | 'specifier' : spécification illégale de liaison |
Erreur du compilateur C2538 | Obsolète. |
Erreur du compilateur C2539 | Obsolète. |
Erreur du compilateur C2540 | expression non constante limitée par tableau |
Erreur du compilateur C2541 | 'identifier' : impossible de supprimer des objets qui ne sont pas des pointeurs |
Erreur du compilateur C2542 | 'identifier' : l'objet de classe n'a pas de constructeur pour l'initialisation |
Erreur du compilateur C2543 | ']' attendu pour l'opérateur '[]' |
Erreur du compilateur C2544 | ')' attendu pour l'opérateur '()' |
Erreur du compilateur C2545 | 'operator' : impossible de trouver l'opérateur surchargé |
Erreur du compilateur C2546 | 'identifier' : si un type est défini à la fois dans un PIA et dans un non-PIA, le PIA doit être référencé au préalable |
Erreur du compilateur C2547 | 'identifier' : tous les paramètres d'une méthode publiée doivent être nommés de manière explicite dans la déclaration |
Erreur du compilateur C2548 | 'function' : paramètre par défaut manquant pour le paramètre paramètre |
Erreur du compilateur C2549 | une conversion définie par l'utilisateur ne peut pas spécifier de type de retour |
Erreur du compilateur C2550 | 'identifier' : les listes d'initialiseurs de constructeur ne sont autorisées que dans les définitions de constructeurs |
Erreur du compilateur C2551 | le type 'void *' nécessite un cast explicite |
Erreur du compilateur C2552 | 'identifier' : les éléments non agrégés ne peuvent pas être initialisés avec une liste d'initialiseurs |
Erreur du compilateur C2553 | « type derived_class::function » : le remplacement du type de retour de fonction virtuelle diffère du « type base_class::function » |
Erreur du compilateur C2555 | 'derived_class::function' : l’annulation du type de retour de fonction virtuelle diffère et n’est pas une covariante de 'base_class::function' |
Erreur du compilateur C2556 | « type1 class::function » : une fonction surchargée diffère uniquement de « type2 class::function » par son type de retour |
Erreur du compilateur C2557 | 'identifier' : impossible d’initialiser des membres privés et protégés sans un constructeur |
Erreur du compilateur C2558 | classe 'class' : pas de constructeur de copie disponible ou le constructeur de copie est déclaré 'explicit' |
Erreur du compilateur C2559 | 'identifier' : impossible de surcharger une fonction membre sans qualificateur ref avec une fonction membre dotée de qualificateur ref |
Erreur du compilateur C2560 | 'identifier' : impossible de surcharger une fonction membre dotée de qualificateur ref avec une fonction membre sans qualificateur ref |
Erreur du compilateur C2561 | 'function' : la fonction doit retourner une valeur |
Erreur du compilateur C2562 | 'function' : la fonction 'void' qui retourne une valeur |
Erreur du compilateur C2563 | incompatibilité dans la liste de paramètres formels |
Erreur du compilateur C2564 | Obsolète. |
Erreur du compilateur C2565 | 'identifier' : le qualificateur ref est illégal pour les constructeurs/destructeurs |
Erreur du compilateur C2566 | fonction surchargée dans l’expression conditionnelle |
Erreur du compilateur C2567 | impossible d’ouvrir les métadonnées dans 'filename', possible_reason |
Erreur du compilateur C2568 | 'identifier' : impossible de résoudre la surcharge de fonction |
Erreur du compilateur C2569 | 'identifier' : l’enum/union ne peut pas être utilisée comme classe de base |
Erreur du compilateur C2570 | 'identifier' : l’union ne peut pas avoir de classes de base |
Erreur du compilateur C2571 | 'identifier' : une fonction virtuelle ne peut pas figurer dans l'union 'union' |
Erreur du compilateur C2572 | 'function' : redéfinition de l'argument par défaut ; nombre de paramètre |
Erreur du compilateur C2573 | 'class' : impossible de supprimer les pointeurs vers les objets de ce type ; la classe n’a aucune surcharge de non-positionnement pour 'operator delete'. Utilisez ::delete ou ajoutez 'operator delete(void*)' à la classe |
Erreur du compilateur C2574 | 'destructor' : ne peut pas être déclaré statique |
Erreur du compilateur C2575 | 'identifier' : seules les fonctions et bases membres peuvent être virtuelles |
Erreur du compilateur C2576 | 'identifier' : ne peut pas introduire une nouvelle méthode virtuelle en tant que 'public'. Envisagez de rendre la méthode non virtuelle ou modifiez l'accessibilité à 'internal' ou 'protected private' |
Erreur du compilateur C2577 | 'identifier' : un destructeur/finaliseur ne peut pas avoir de type de retour |
Erreur du compilateur C2578 | 'class' : le type ne peut pas avoir de constructeur 'protected' ou 'protected public' |
Erreur du compilateur C2579 | impossible de résoudre le type type (décalage). Il est attendu dans nom de fichier |
Erreur du compilateur C2580 | 'identifier' : plusieurs versions de fonctions de membres spéciales par défaut ne sont pas autorisées |
Erreur du compilateur C2581 | 'type' : la fonction statique 'operator =' est illégale |
Erreur du compilateur C2582 | la fonction 'operator operator' n’est pas disponible dans 'type' |
Erreur du compilateur C2583 | 'identifier' : pointeur 'const/volatile' 'this' illégal pour les constructeurs/destructeurs |
Erreur du compilateur C2584 | 'class' : la base directe 'base_class2' est inaccessible ; il existe déjà une base 'base_class1' |
Erreur du compilateur C2585 | la conversion explicite vers 'type' est ambiguë |
Erreur du compilateur C2586 | syntaxe de conversion définie par l'utilisateur incorrecte : indirections illégales |
Erreur du compilateur C2587 | 'identifier' : utilisation illégale d'une variable locale comme paramètre par défaut |
Erreur du compilateur C2588 | '::~identifier' : destructeur/finaliseur global illégal |
Erreur du compilateur C2589 | 'identifier' : jeton illégal à droite de '::' |
Erreur du compilateur C2590 | 'identifier' : seul un constructeur peut avoir une liste d'initialiseurs de base/membre |
Erreur du compilateur C2591 | ExclusiveTo ne peut pas utiliser 'type' comme argument. Seule une 'ref class' est un argument valide |
Erreur du compilateur C2592 | 'class' : 'base_class2' est héritée de 'base_class1' et ne peut pas être spécifiée de nouveau |
Erreur du compilateur C2593 | 'operator identifier' est ambigu |
Erreur du compilateur C2594 | 'operator' : conversions ambiguës de 'type1' en 'type2' |
Erreur du compilateur C2595 | 'identifier' Un type d'attribut WinRT doit être sealed |
Erreur du compilateur C2596 | 'identifier' Un champ d'attribut WinRT peut uniquement être de type 'public enum class', 'int', 'unsigned int', 'bool', 'Platform::Type', 'Platform::String' ou 'Windows::Foundation::HResult' |
Erreur du compilateur C2597 | référence illégale au membre 'identifier' non statique |
Erreur du compilateur C2598 | la spécification de la liaison doit figurer au niveau de l’étendue globale |
Erreur du compilateur C2599 | 'identifier' : la déclaration anticipée d'un enum managée/WinRT n'est pas autorisée |
Voir aussi
Erreurs et avertissements du compilateur C/C++ et des outils de génération
Erreurs du compilateur C2000 - C3999, C7000 - C7999