"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué recibo \ "referencia indefinida \" errores con miembros estáticos en C ++?

¿Por qué recibo \ "referencia indefinida \" errores con miembros estáticos en C ++?

Publicado el 2025-03-25
Navegar:668

Why Am I Getting \

referencias indefinidas a los miembros estáticos: una guía para principiantes

Los miembros de datos estáticos a menudo se emplean para compartir información entre instancias de una clase. Sin embargo, los desarrolladores ocasionalmente encuentran errores de "referencia indefinida" cuando utilizan miembros de datos estáticos. Este problema surge debido a la distinción entre declaraciones y definiciones.

comprensión de declaraciones y definiciones

Una declaración introduce la existencia de una variable en el compilador sin especificar su ubicación de memoria. Una definición, por otro lado, asigna memoria para la variable y proporciona su dirección.

En el caso de los miembros de datos estáticos, su declaración ocurre dentro de la definición de clase pero no les asigna una dirección. La definición real debe proporcionarse por separado.

Definición de miembros de datos estáticos

para resolver errores de "referencia indefinida", definir explícitamente miembros de datos estáticos fuera de la definición de clase, típicamente en el archivo de implementación (.cpp). Por ejemplo, considere el siguiente código:

// Header file (.h)
class Example {
    static bool exampleStaticMember;
};

// Implementation file (.cpp)
bool Example::exampleStaticMember;

Exception para los tipos de integral y enumeración

Los miembros de datos estáticos de tipos integrales o de enumeración se pueden inicializar directamente dentro de la definición de clase:

class Example {
    static const int initialized = 15;
};

En este caso, la definición en el archivo de implementación debe omitir el inicializador:

const int Example::initialized;

Los miembros de datos estáticos en las plantillas

Para los plantillas, los miembros de los datos estatales se definen dentro del archivo del Head de Heads en las plantillas con las plantillas. La excepción a la regla de definición permite múltiples definiciones de miembros de datos estáticos de plantillas de clase.

otros usos de "estática"

. llamadas.

    en el alcance del espacio de nombres, declara objetos y funciones con un enlace interno, aunque este uso se desaconseja para los objetos.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3