usar - ¿Accediendo a variables de clase estáticas en C++?
variable static java (4)
Duplicar:
C ++: referencia indefinida al miembro de la clase estática
Si tengo una clase / estructura como esta
// header file
class Foo
{
public:
static int bar;
int baz;
int adder();
};
// implementation
int Foo::adder()
{
return baz + bar;
}
Esto no funciona Aparece un error de "referencia indefinida al error` Foo :: bar ''". ¿Cómo accedo a las variables de clase estáticas en C ++?
Debe agregar la siguiente línea en el archivo de implementación :
int Foo::bar = you_initial_value_here;
Esto es necesario para que el compilador tenga un lugar para la variable estática.
Es la sintaxis correcta, sin embargo, Foo::bar
debe definirse por separado, fuera del encabezado. En uno de sus archivos .cpp
, diga esto:
int Foo::bar = 0; // or whatever value you want
Necesita agregar una línea:
int Foo::bar;
Eso te definiría un almacenamiento. La definición de estática en clase es similar a "extern": proporciona un símbolo pero no lo crea. es decir
foo.h
class Foo {
static int bar;
int adder();
};
foo.cpp
int Foo::bar=0;
int Foo::adder() { ... }
para el uso de la variable estática en la clase, primero debe dar un valor en general (no localy) a su variable estática (initialize) luego puede acceder a un miembro estático en la clase:
class Foo
{
public:
static int bar;
int baz;
int adder();
};
int Foo::bar = 0;
// implementation
int Foo::adder()
{
return baz + bar;
}