Programar em C++/Classes internas
Conceituação
editarAs classes podem ser construídas uma dentro da outra para uma melhor organização do código. Esta possibilidade nos leva a implicações a serem consideradas durante a fase de implementação do código. Devemos verificar as particularidades de acesso a dados, o que nos leva a diversas particularidades devido ao escopo das mesmas.
No exemplo a seguir, temos a implementação básica de uma classe interna a outra:
class data
{
int n;
char str[256];
public:
class idata
{ int x;
int y;
int z;
};
int getn();
char *getstr();
void setstr( const char *instr);
void setn(int inn);
};
Uma vez que criamos o protótipo de objeto dentro de outra classe podemos usá-lo através do operador de resolução de escopo. Deveremos nos referir ao operador para acessar o corpo da primeira classe e depois o invocamos novamente para alcançar a outra. Desta forma, poderíamos usá-la como exemplificado abaixo:
data::idata ni;
É importante notar que objetos diferentes terão dados diferentes na região da classe interna, isso impede que usemos dados da classe mais externa dentro das classes internas. Devido a esta característica as funções dentro da classe interna não podem acessar dados da classe mais externa, a menos que sejam estáticos, o que não exige definição do objeto a qual eles pertencem. Portanto, o uso de classes internas permite um isolamento de parte dos dados e prover um tratamento diferenciado para os mesmos.