quinta-feira, 28 de fevereiro de 2013

C++: Como declarar um atributo static

Não quero aprofundar nos conceitos de um método/atributo estático nesse momento, então hoje vou assumir que saibam o que é um método ou atributo estático (o que pode não ser verdade, uma vez que nunca aprendi direito na escola e nem na faculdade).
O motivo de estar fazendo esse tutorial é porque levei um bom tempo para poder entender o que estava acontecendo. Na maioria das linguagens de programação, basta por o modificador static na frente que já é suficiente, mais ou menos como no exemplo abaixo:

Arquivo: A.h
class A{
  static int staticAtr;

  public void metodo();
}



Só que se tentarmos acessar diretamente em um método qualquer...
Arquivo: A.cpp
#include "A.h"
void A::metodo(){
  A::staticAtr = 1;
}

Irá dar um erro de linker, avisando que A::staticAtr não está definido. O que deve fazer aí é declarar o atributo estático também no arquivo cpp, como mostra o exemplo abaixo:


Arquivo: A.cpp
#include "A.h"

int A::staticAtr;

void A::metodo(){
  A::staticAtr = 1;
}

A partir daqui, você pode usar livremente o atributo estático.

Nenhum comentário:

Postar um comentário