Saltar al contenido

(->) operador de flecha y (.) operador de punto, puntero de clase

Solución:

debe leer acerca de la diferencia entre punteros y referencias que podrían ayudarlo a comprender su problema.

En resumen, la diferencia es:
cuando declaras myclass *p es un puntero y puede acceder a sus miembros con ->, porque p apunta a la ubicación de la memoria.

Pero tan pronto como llames p=new myclass[10]; p comienza a apuntar a la matriz y cuando llamas p[n] obtienes una referencia, a qué miembros se debe acceder usando ..
Pero si usas p->member = smth eso sería lo mismo que si llamaras p[0].member = smth, porque el número en [] es un desplazamiento de p a donde buscar el siguiente miembro de la matriz, por ejemplo (p + 5)->member = smth sería lo mismo que p[5].member = smth

Tenga en cuenta que para una variable de puntero x

myclass *x;
  • *x significa “obtener el objeto al que apunta x”
  • x->setdata(1, 2) es lo mismo que (*x).setdata(1, 2) y finalmente
  • x[n] significa “obtener el objeto n-ésimo en una matriz”.

Así por ejemplo x->setdata(1, 2) es lo mismo que x[0].setdata(1, 2).

Porque al usar [] como p[3] ya está desreferenciando el puntero a array + index shift. Después de eso, debe usar “.”, Ya que p[3] es un objeto, no un puntero.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *