Errores del compilador de C2500 a C2599
En los artículos de esta sección de la documentación se explican un subconjunto de los mensajes de error generados por el compilador.
Importante
Las herramientas de compilación y los compiladores de Visual Studio pueden notificar muchas clases de errores y advertencias. Después de encontrar un error o una advertencia, las herramientas de compilación pueden realizar suposiciones sobre la intención del código e intentar continuar, por lo que pueden notificar más problemas al mismo tiempo. Si las herramientas hacen una suposición incorrecta, es posible que los errores o advertencias posteriores no se apliquen al proyecto. Cuando corrija problemas en el proyecto, empiece siempre por el primer error o advertencia notificados y recompile a menudo. Una corrección puede hacer que desaparezcan muchos errores posteriores.
Para obtener ayuda con un mensaje de diagnóstico concreto en Visual Studio, seleccione la ventana Salida y pulse la tecla F1. Visual Studio abre la página de documentación para ese error, si existe. También puede usar la herramienta de búsqueda en la parte superior de la página para buscar artículos sobre advertencias o errores específicos. O bien examine la lista de errores y advertencias por herramienta y escriba en la tabla de contenido de esa página.
Nota:
No se documentan todos los errores o advertencias de Visual Studio. En muchos casos, el mensaje de diagnóstico proporciona toda la información disponible. Si ha llegado a esta página cuando ha usado F1 y cree que el mensaje de error o advertencia necesita una explicación adicional, háganoslo saber. Puede usar los botones de comentarios de esta página para notificar un problema de documentación en GitHub. Si cree que el error o la advertencia son incorrectos o ha encontrado otro problema con el conjunto de herramientas, notifique un problema de producto en el sitio de Developer Community. También puede enviar comentarios y notificar errores en el IDE. En Visual Studio, vaya a la barra de menús y seleccione Ayuda > Enviar comentarios > Notificar un problema, o bien envíe una sugerencia desde Ayuda > Enviar comentarios > Enviar una sugerencia. Se han creado algunos temas de error del compilador que el compilador no emite y ahora se redirigen a esta página, alternativamente.
Puede encontrar ayuda adicional sobre errores y advertencias en los foros de Preguntas y respuestas de Microsoft Learn. O bien busque el número de error o advertencia en el sitio de Developer Community de Visual Studio C++. También puede buscar soluciones en Stack Overflow.
Para obtener vínculos a ayuda adicional y recursos de la comunidad, consulte Ayuda y comunidad de Visual C++.
Mensajes de error
Error | Mensaje |
---|---|
Error del compilador C2500 | "identifier1": "identifier2" ya es una clase base directa |
Error del compilador C2501 | "identifier": "__declspec(specifier)" solamente se puede aplicar a estructuras, uniones, clases o miembros de campo de bits sin signo |
Error del compilador C2502 | "identifier": hay demasiados modificadores de acceso en la clase base |
Error del compilador C2503 | "class": las clases base no pueden contener matrices de tamaño cero |
Error del compilador C2504 | "class": clase base sin definir |
Error del compilador C2505 | "symbol": "__declspec(specifier)" solamente se puede aplicar a declaraciones o definiciones de objetos globales o miembros de datos estáticos |
Error del compilador C2506 | "member": "__declspec(specifier)" no se puede aplicar a este símbolo |
Error del compilador C2507 | "identifier": hay demasiados modificadores virtuales en la clase base |
Error del compilador C2508 | "identifier": "__declspec(specifier1)" no se puede combinar con "__declspec(specifier2)" |
Error del compilador C2509 | "identifier": función miembro no declarada en "class" |
Error del compilador C2510 | "identifier": el lado izquierdo de "::" debe ser una clase, una estructura o una unión |
Error del compilador C2511 | "identifier": la función miembro sobrecargada no se ha encontrado en "class" |
Error del compilador C2512 | "identifier": no hay disponible un constructor predeterminado adecuado |
Error del compilador C2513 | "*type": ninguna variable declarada antes de "=" |
Error del compilador C2514 | "class": la clase no tiene constructores |
Error del compilador C2515 | "identifier": "vtguard" solamente se puede aplicar a definiciones o declaraciones de clase |
Error del compilador C2516 | "class": no es una clase base válida |
Error del compilador C2517 | "identifier": el lado derecho de "::" no está definido |
Error del compilador C2518 | la palabra clave "keyword" no es válida en la lista de clases base; se ha omitido |
Error del compilador C2519 | "identifier": los atributos de WinRT solo pueden contener campos públicos |
Error del compilador C2520 | "class": no hay ningún constructor no explícito disponible para la conversión implícita |
Error del compilador C2521 | un destructor o finalizador no acepta ningún argumento |
Error del compilador C2522 | "identifier": no se puede usar el identificador de sobrecarga en "identifier1", puesto que ya se ha especificado en "identifier2" |
Error del compilador C2523 | "class::~identifier": falta de coincidencia de la etiqueta de destructor o finalizador |
Error del compilador C2524 | "identifier":un destructor o finalizador debe tener una lista de parámetros "void" |
Error del compilador C2525 | "identifier": el parámetro "identifier1" se denomina "identifier2" en la función base y debe coincidir con una implementación publicada |
Error del compilador C2526 | "identifier1": la función de vinculación de C no puede devolver la clase "identifier2" de C++ |
Error del compilador C2527 | "identifier": DefaultOverload no se puede especificar en "function1" ni "function2". Quite una especificación o cambie el nombre de la función durante la implementación |
Error del compilador C2528 | "identifier": el puntero a la referencia no es válido |
Error del compilador C2529 | "identifier": la referencia a la referencia no es válida |
Error del compilador C2530 | "identifier": se deben inicializar las referencias |
Error del compilador C2531 | "identifier": referencia no válida a un campo de bits |
Error del compilador C2532 | "identifier": modificador para la referencia no válido |
Error del compilador C2533 | "identifier": los constructores no permiten un tipo de valor devuelto |
Error del compilador C2534 | "identifier": el constructor no puede devolver un valor |
Error del compilador C2535 | "identifier": función miembro ya definida o declarada |
Error del compilador C2536 | Obsoleto. |
Error del compilador C2537 | "specifier": especificación de vinculación no válida |
Error del compilador C2538 | Obsoleto. |
Error del compilador C2539 | Obsoleto. |
Error del compilador C2540 | expresión no constante como límite de matriz |
Error del compilador C2541 | "identifier": no se pueden eliminar objetos que no sean punteros |
Error del compilador C2542 | "identifier": el objeto de clase no tiene constructor para la inicialización |
Error del compilador C2543 | se esperaba "]" para el operador "[]" |
Error del compilador C2544 | se esperaba ')' para el operador '()' |
Error del compilador C2545 | "operator": no se ha podido encontrar el operador sobrecargado |
Error del compilador C2546 | "identifier": cuando un tipo se define tanto en un ensamblado de interoperabilidad primario como en otro no primario, se debe hacer referencia al primario en primer lugar |
Error del compilador C2547 | "identifier": todos los parámetros de un método publicado se deben designar explícitamente en la declaración |
Error del compilador C2548 | "function": falta el parámetro predeterminado para parameter |
Error del compilador C2549 | la conversión definida por el usuario no puede especificar un tipo de valor devuelto |
Error del compilador C2550 | "identifier": las listas de inicializadores de constructor solo se permiten en las definiciones de constructor |
Error del compilador C2551 | El tipo 'void *' necesita conversión explícita |
Error del compilador C2552 | "identifier": los no agregados no se pueden inicializar con la lista de inicializadores |
Error del compilador C2553 | "typederived_class::function": la invalidación del tipo de valor devuelto de la función virtual difiere de "type base_class::function" |
Error del compilador C2555 | "derived_class::function": invalidar el tipo de valor devuelto de la función virtual difiere y no es covariante de "base_class::function" |
Error del compilador C2556 | "type1 class::function": la función sobrecargada solo difiere según el tipo devuelto de "type2 class::function" |
Error del compilador C2557 | "identifier": los miembros privados y protegidos no se pueden inicializar sin un constructor. |
Error del compilador C2558 | clase "class": no hay un constructor de copias disponible o este se ha declarado como "explicit" |
Error del compilador C2559 | "identifier": no se puede sobrecargar una función miembro que no tiene un calificador de referencia con una función miembro que tiene un calificador de referencia |
Error del compilador C2560 | "identifier": no se puede sobrecargar una función miembro que tiene un calificador de referencia con una función miembro que no tiene un calificador de referencia |
Error del compilador C2561 | "function": la función debe devolver un valor |
Error del compilador C2562 | "function": función "void" que devuelve un valor |
Error del compilador C2563 | hay un error de coincidencia en la lista de parámetros formales |
Error del compilador C2564 | Obsoleto. |
Error del compilador C2565 | "identifier": calificador de referencia no válido para constructores o destructores |
Error del compilador C2566 | función sobrecargada en expresión condicional |
Error del compilador C2567 | no se pueden abrir los metadatos en "filename", possible_reason |
Error del compilador C2568 | "identifier": no se puede resolver la sobrecarga de funciones |
Error del compilador C2569 | "identifier": una enumeración o una unión no se pueden utilizar como clase base |
Error del compilador C2570 | "identifier": la unión no puede tener clases base |
Error del compilador C2571 | "identifier": la función virtual no puede estar en la unión "union" |
Error del compilador C2572 | "function": nueva definición del argumento predeterminado: parámetro number |
Error del compilador C2573 | "clase": no se pueden eliminar punteros a objetos de este tipo; la clase no tiene ninguna sobrecarga no ubicada para "operador delete". Use ::delete o agregue "operator delete(void*)" a la clase |
Error del compilador C2574 | "destructor": los no se puede declarar estático |
Error del compilador C2575 | "identifier": solo las funciones miembro y las bases pueden ser virtuales |
Error del compilador C2576 | "identifier": no puede introducir un nuevo método virtual como "public". Considere la posibilidad de convertir el método en no virtual o cambiar la accesibilidad a "interna" o "privada protegida". |
Error del compilador C2577 | "identifier": un destructor o finalizador no puede tener un tipo de valor devuelto |
Error del compilador C2578 | "class": el tipo no puede tener un constructor "protegido" o "público protegido" |
Error del compilador C2579 | no se puede resolver el tipo type (offset). Se espera en filename |
Error del compilador C2580 | "identifier": no se admiten varias versiones de una función miembro especial con valor predeterminado. |
Error del compilador C2581 | "type": la función estática "operator =" no es válida |
Error del compilador C2582 | La función "operator operator" no está disponible en "type" |
Error del compilador C2583 | "identifier": el puntero "const/volatile" "this" no es válido para constructores o destructores |
Error del compilador C2584 | "class": la base directa "base_class2" no es accesible; ya es una base de "base_class1" |
Error del compilador C2585 | la conversión explícita a "type" es ambigua |
Error del compilador C2586 | sintaxis de conversión definida por el usuario incorrecta: direccionamientos indirectos no válidos |
Error del compilador C2587 | "identifier": uso no válido de la variable local como parámetro predeterminado |
Error del compilador C2588 | "::~identifier": destructor o finalizador global no válido |
Error del compilador C2589 | "identifier": token no válido en el lado derecho de "::" |
Error del compilador C2590 | "identifier": solo un constructor puede tener una lista de inicializadores de base o miembro |
Error del compilador C2591 | ExclusiveTo no puede usar "type" como argumento. Solo "ref class" es un argumento válido |
Error del compilador C2592 | "class": "base_class2" se hereda de "base_class_1" y no se puede volver a especificar |
Error del compilador C2593 | "operator identifier" es ambiguo |
Error del compilador C2594 | "operator": conversiones ambiguas de "type1" a "type2" |
Error del compilador C2595 | "identifier": Un tipo de atributo de WinRT debe estar sellado |
Error del compilador C2596 | "identifier": Un campo de atributo de WinRT solo puede ser "public enum class", "int", "unsigned int", "bool", "Platform::Type", "Platform::String" o "Windows::Foundation::HResult" |
Error del compilador C2597 | referencia no válida al miembro no estático "identifier" |
Error del compilador C2598 | la especificación de vinculación debe estar en el ámbito global |
Error del compilador C2599 | "identifier": no se permite la declaración adelantada de una enumeración de WinRT o administrada |
Consulte también
Advertencias y errores de las herramientas de compilación y del compilador de C/C++
Errores del compilador de C2000 a C3999 y de C7000 a C7999