Miembros estáticos de C ++ en clase
Pregunta
¿Es posible acceder y acceder a miembros estáticos dentro de una clase sin crear primero una instancia de esa clase? Es decir, tratar a la clase como una especie de vertedero para los globales
James
Solución
También puede llamar a un método estático a través de un puntero nulo. El siguiente código funcionará, pero no lo use :)
struct Foo
{
static int boo() { return 2; }
};
int _tmain(int argc, _TCHAR* argv[])
{
Foo* pFoo = NULL;
int b = pFoo->boo(); // b will now have the value 2
return 0;
}
Otros consejos
Sí, es precisamente lo que static
significa para los miembros de la clase:
struct Foo {
static int x;
};
int Foo::x;
int main() {
Foo::x = 123;
}
Por otro lado, para eso están los espacios de nombres:
namespace toolbox
{
void fun1();
void fun2();
}
El único uso de clases de funciones estáticas es para clases de políticas.
En resumen, sí.
En general, se puede llamar a un miembro estático en cualquier lugar, simplemente trata el nombre de la clase como un espacio de nombres.
class Something
{
static int a;
};
// Somewhere in the code
cout << Something::a;
Sí:
class mytoolbox
{
public:
static void fun1()
{
//
}
static void fun2()
{
//
}
static int number = 0;
};
...
int main()
{
mytoolbox::fun1();
mytoolbox::number = 3;
...
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow