Segun he llegado a entender , tengo que crear un puntero llamado fechaNacimiento dentro de la declaracion privada de Paciente
Dentro del constructor de Paciente tengo que hacer algo con el objeto de la clase fecha?
El parametro del constructor del tipo Fecha se le pasa desde el main?
) así es como lo veo:Paciente::Paciente( ......, ......, ......., const Fecha *fechaNacimiento) {
...........
...........
this->fechaNacimiento = new Fecha(fechaNacimiento);
...........
...........
}
Fecha *fecha = new Fecha();
//inicializas tu objeto fecha
Paciente *paciente = new Paciente(.....,.......,........,fecha);
delete fecha;
Ferdy escribió:Ehm... no.
El constructor de Paciente recibe una referencia a una Fecha, no un puntero.
- ferdy
Ferdy escribió:Ehm... no.
El constructor de Paciente recibe una referencia a una Fecha, no un puntero.
- ferdy
)- Paciente::Paciente( ......, ......, ......., const Fecha *fechaNacimiento) {
+ Paciente::Paciente( ......, ......, ......., const Fecha& fechaNacimiento) {
No creo que haya gran diferencia (excepto en casos como sobrecarga de operadores o si estas usando otra plataforma como .net donde el manejo de los punteros y las referencias en memoria es distinto). Todo depende del tipo de codigo a implementar.
Ferdy escribió:Para nada, hay mucha diferencia. En C++, las referencias no tienen por qué implementarse con punteros.
Además, usar una referencia tiene connotaciones semánticas que no tienen los punteros. Nada que ver.
- ferdy
Vale entonces en el constructor de la clase Paciente tengo que asignar esa Fecha al objeto de la clase Fecha que esta en la parte privada de Paciente no? Esa es mi duda como se haria esa asignacion? Mediante el constructor copia?
codestation escribió:Ferdy escribió:Para nada, hay mucha diferencia. En C++, las referencias no tienen por qué implementarse con punteros.
Además, usar una referencia tiene connotaciones semánticas que no tienen los punteros. Nada que ver.
- ferdy
Es cierto, no tienen por que implementarse con punteros, pero eso no conlleva a que no puedan o se deban implementar de esa manera, todo va si necesitas esas connotaciones o no en el codigo. No veo razon para seguir con el tema, solo di el primer ejemplo usando un puntero porque queria dar una alternativa a la declaración que ya estaba en el UML como referencia.Vale entonces en el constructor de la clase Paciente tengo que asignar esa Fecha al objeto de la clase Fecha que esta en la parte privada de Paciente no? Esa es mi duda como se haria esa asignacion? Mediante el constructor copia?
Si, puedes hacerlo utilizando el constructor copia. (Tambien puedes usar el operador de asignación que segun veo esta sobrecargado con esa intención, pero lo no veo muy necesario usarlo en el constructor). Saludos.
a los dos Es cierto, no tienen por que implementarse con punteros, pero eso no conlleva a que no puedan o se deban implementar de esa manera, todo va si necesitas esas connotaciones o no en el codigo.
Mediante el constructor copia?