Pergunta

É possível o acesso para acessar e usar estáticos membros dentro de uma classe sem primeiro criar uma instância dessa classe? Ou seja, tratar a classe como uma espécie de dumping terreno para globals

James

Foi útil?

Solução

Você também pode chamar um método estático através de um ponteiro nulo. O código abaixo trabalho vontade, mas por favor, não usá-lo:)

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;
}

Outras dicas

Sim, é precisamente o que significa static para os membros da classe:

struct Foo {
    static int x;
};

int Foo::x;

int main() {
    Foo::x = 123;
}

Por outro lado, é o que namespace são para:

namespace toolbox
{
  void fun1();
  void fun2();
}

O único uso de classes de funções estáticas é para as classes políticas.

Em suma, sim.

No longa, um membro estático pode ser chamado em qualquer lugar, você simplesmente tratar o nome da classe como um espaço de nomes.

class Something
{
   static int a;
};

// Somewhere in the code
cout << Something::a;

Sim:

class mytoolbox
{
public:
  static void fun1()
  {
    //
  }

  static void fun2()
  {
    //
  }
  static int number = 0;
};
...
int main()
{
  mytoolbox::fun1();
  mytoolbox::number = 3;
  ...
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top