Um aluno que está aprendendo C++ criou dois arquivos .cpp na mesma pasta e escreveu os seguintes códigos em cada um deles:
Ao tentar rodar o segundo código, o aluno foi surpreendido com a mensagem de um erro. Sabendo que o arquivo com o primeiro código se chama gato.cpp, explique qual foi o erro do aluno e como você o consertaria.
Passo 1
Eai, tudo beleza?
Nessa questão devemos encontrar o erro do código que nos foi apresentado. Para isso, é necessário que entendamos o que está escrito nesses códigos.
No primeiro código, a classe gato é criada e é passado para ela um atributo , que recebe uma string “miau”, e um método , que imprime na tela o valor guardado no atributo .
No segundo código, é incluído o código do primeiro. Dentro da função , é instanciado um objeto da classe com o nome e, logo em seguida, é chamado o método e logo em seguida é encerrada a função .
Passo 2
É importante que direcionemos a nossa atenção para a tentativa de acesso ao método na linha do segundo código. Para que fosse possível acessarmos esse método, ele precisa ser público, no entanto, no primeiro código, não é especificado quais membros são públicos e quais são privados.
Quando isso não é especificado, no C++, é admitido, por convenção, que esses membros são do tipo privado, o que explica o motivo do erro que ocorre ao tentar executar o segundo código.
Passo 3
Para consertarmos esse erro, basta explicitarmos quais membros devem ser privados e públicos. No caso desse código, seria suficiente para consertar o erro deixarmos o atributo privado e o método público.
Resposta
O segundo código está tentando acessar um membro privado do primeiro código. Para consertar isso, é preciso tornar esse membro público.