Exercícios Resolvidos de Ponteiros com classes e objetos

Ver Teoria

Enunciado

O código abaixo possui erros. Identifique e corrija os erros:

Passo 1

Questões de encontrar erros é sempre bom a gente analisar linha por linha.

Vamos começar observando o código da classe C o i s a . Aqui temos a declaração de dois atributos do tipo f l o a t e o desenvolvimento de um método i n i c i a l i z a C o i s a

Note o seguinte: os nomes dos parâmetros do método são iguais aos nomes dos atributos da classe. Quando isso acontece devemos usar o ponteiro t h i s para evitar ambiguidades.

Nas linhas 09 e 10 falta utilizar o ponteiro t h i s !

Corrigindo o código fica:

Passo 2

Agora vamos olhar a m a i n (   ) com carinho. Observando o plano geral vemos que na m a i n (   ) é instanciado um objeto e um ponteiro, o objeto é utilizado para inicializar os atributos e o ponteiro é usado para acessar estes atributos.

Agora vamos olhar linha por linha:

Nas linhas 16 e 17 é declarado um objeto o b j e t o C o i s a e apontamos o ponteiro p n t C o i s a para este objeto. Até aqui tudo certo.

Em seguida objeto o b j e t o C o i s a utiliza a função i n i c i a l i z a C o i s a , porém na linha 19 temos o uso errado do operador seta -   > . Este operador só pode ser utilizado com ponteiros, e o b j e t o C o i s a não é um ponteiro!

Na linha 19 temos o uso errado do operador seta.

Corrigindo, vamos substituir o operador seta pelo ponto:

Passo 3

Antes de continuar, você precisa lembrar que existem duas formas de usar um ponteiro para acessar um membro do objeto.

A primeira usa os operadores de desreferenciação * e ponto .

* n o m e P o n t e i r o . n o m e A t r i b u t o

E a segunda forma usa o operador seta -   > n o m e P o n t e i r o - > n o m e A t r i b u t o

Agora vamos dar uma olhada nos c o u t das linhas 21 e 22.

O primeiro c o u t tentou utilizar a primeira forma de acessar o atributo. Porém faltaram os parêntesis, e sem eles o código segue na precedência errada. Já o segundo c o u t fez uma mistura das duas formas de acessar, porém se a gente apagar o * vamos conseguir acessar pela segunda forma.

Na linha 21 falta o uso dos parêntesis, e na linha 22 o uso de * é desnecessário.

Corrigindo vamos ter:

E prontinho! Corrigimos todos os erros!

Resposta

Linhas 09 e 10 falta utilizar o ponteiro t h i s !

Linha 19 temos o uso errado do operador seta.

Linha 21 falta o uso dos parêntesis

Linha 22 o uso de * é desnecessário.