Seguimos buscando a Arshak. Ayudanos compartiendo!
Encuesta no oficial de docentes
Resultados de la encuesta no oficial de docentes
Probaste el SIGA Helper?

Donar $100 Donar $200 Donar $500 Donar mensualmente


Enviar respuesta 
 
Calificación:
  • 0 votos - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Buscar en el tema
[Info 2] Problema con herencia
Autor Mensaje
nutters Sin conexión
Profesor del Modulo A
Winter is comming!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 332
Agradecimientos dados: 61
Agradecimientos: 450 en 19 posts
Registro en: Sep 2012
Mensaje: #1
[Info 2] Problema con herencia Dudas y recomendaciones Informática II (Electrónica)
Hola, tengo 2 clases, una es la clase punto (que es un punto en un eje coordenado) y otra que es figura (que es un circulo que hereda de punto el centro). Estoy con un problema cuando intento implementar el constructor de copia de una figura (refiriendome a figura = circulo siempre)... Pongo el codigo a continuacion y les indico la linea del error abajo.



class punto
{
private:
double c_x,c_y; //POS EN X E Y EN EJE COORDENADO
protected:
static int creados,vivos; //CONTADORES
public:
//CONSTRUCTORES
punto(double = 0, double = 0);
punto(const punto &);
~punto();
//METODOS PARA MANEJO DE DATOS
void Setx(double);
void Sety(double);
double Getx(void);
double Gety(void);

//MANEJO CONTADORES E IMPRIMIR VALORES
static int Getvivos() {return vivos;}
static int Getcreados() {return creados;}
void prt_punto(std::string);

//SOBRECARGAS

punto operator+(const punto&);
punto operator++(int); //postincremento p++;
punto operator++(); //preincremento ++p;
friend std::ostream& operator<<(std::ostream &, const punto&);
};



Ahora la clase figura:



class figura: public punto
{
private:
double radio;
protected:
static int c_c, c_t;
public:
figura(double=0);
figura(double, const punto&);
figura(const figura&);
~figura();

double Getr(){return radio;}
void SetRadio(double r){radio =r;}
};



El problema puntual lo tengo cuando implemento el constructor figura(const figura&);... es el siguiente codigo:



figura::figura(const figura &f):punto()
{
std::cout << "Constructor figura copia: " << this << std::endl;
SetRadio(f.radio);
}


Si lo dejo asi me compila perfectamente, pero notaran que no seteo el eje coordenado (que lo posee f)... cuando hago esto:



figura::figura(const figura &f):punto(f.c_x, f.c_y)
{
std::cout << "Constructor figura copia: " << this << std::endl;
SetRadio(f.radio);
}



Me tira este error:

C:\Clases qt\matias\Practica_parcial-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2008__Qt_SDK__Debug\..\Practica_parcial\figura.cpp:18: error: C2248: 'punto::c_x' : no se puede obtener acceso al miembro private miembro declarado en la clase 'punto'

C:\Clases qt\matias\Practica_parcial-build-desktop-Qt_4_8_1_for_Desktop_-_MSVC2008__Qt_SDK__Debug\..\Practica_parcial\figura.cpp:18: error: C2248: 'punto::c_y' : no se puede obtener acceso al miembro private miembro declarado en la clase 'punto'

Ya intente solucionarlo de varias maneras, pero nada, intente en lugar de poner f.c_x con f.Getx() (lo mismo con la y) pero nada. Alguna idea?

[Imagen: 940c7f292a23ac2bfeb007a11ed0c.png]
07-06-2013 00:01
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
AndresDemski Sin conexión
Militante
Ayudante Informatica 2
***

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 75
Agradecimientos dados: 1
Agradecimientos: 12 en 9 posts
Registro en: Aug 2011
Facebook
Mensaje: #2
RE: [Info 2] Problema con herencia
Proba con esto:

figura::figura(const figura &f):punto(f)

Usarias el polimorfismo de c++ passandole aal constructor de copia de punto un objeto que es como punto.
Si no anda con eso, despues lo veo bien.
07-06-2013 00:30
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
[-] AndresDemski recibio 1 Gracias por este post
nutters (07-06-2013)
nutters Sin conexión
Profesor del Modulo A
Winter is comming!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 332
Agradecimientos dados: 61
Agradecimientos: 450 en 19 posts
Registro en: Sep 2012
Mensaje: #3
RE: [Info 2] Problema con herencia
ahi compila y lo hace bien... hice lo que dijiste =P graciaas! igual tengo una duda.... Porque funciona asiii? jajaja, onda... no es que el constructor punto espera un objeto punto? yo ahi le estoy pasando f que es un objeto figura.... (o cuando paso asi lo que hace es pasar f con los datos de punto y no de figura?).

[Imagen: 940c7f292a23ac2bfeb007a11ed0c.png]
07-06-2013 10:25
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Abend Sin conexión
Campeon del cubo Rubik
Sin estado :(
****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 179
Agradecimientos dados: 26
Agradecimientos: 36 en 24 posts
Registro en: Feb 2013
Mensaje: #4
RE: [Info 2] Problema con herencia
Pasa que Andres uso el poliformismo que no esta dentro del alcance de info 2.
07-06-2013 11:18
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nutters Sin conexión
Profesor del Modulo A
Winter is comming!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 332
Agradecimientos dados: 61
Agradecimientos: 450 en 19 posts
Registro en: Sep 2012
Mensaje: #5
RE: [Info 2] Problema con herencia
ah ah ah ah..... sisi, hubo un ligero comentario sobre polimorfismo en el curso.... pero no mas que eso, sin hacerlo con polimorfismo no se puede?

[Imagen: 940c7f292a23ac2bfeb007a11ed0c.png]
07-06-2013 11:44
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Elmats Sin conexión
Presidente del CEIT
Oh my gauss
********

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 1.307
Agradecimientos dados: 25
Agradecimientos: 110 en 69 posts
Registro en: Mar 2012
Mensaje: #6
RE: [Info 2] Problema con herencia
Capaz la estoy flasheando porque lo vi por arriba pero te convendria en el getx, gety usar la llamada por referencia, despues hacer un constructor parametrizado usando esas llamadas por referencia por ejemplo.
07-06-2013 11:56
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nutters Sin conexión
Profesor del Modulo A
Winter is comming!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 332
Agradecimientos dados: 61
Agradecimientos: 450 en 19 posts
Registro en: Sep 2012
Mensaje: #7
RE: [Info 2] Problema con herencia
mmmm.... no entendi una pomo a que te referis Elmats jajaja xD

[Imagen: 940c7f292a23ac2bfeb007a11ed0c.png]
07-06-2013 12:06
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Elmats Sin conexión
Presidente del CEIT
Oh my gauss
********

Otra
UBA - Ciencias Exactas y Naturales

Mensajes: 1.307
Agradecimientos dados: 25
Agradecimientos: 110 en 69 posts
Registro en: Mar 2012
Mensaje: #8
RE: [Info 2] Problema con herencia
Figura(double z=0, double x=0, double y=0)
{
r=z;
punto::GetValor(x,y);
b=x;
h=y;

};


pero GetValor la defino asi:
Hago el llamado por referencia para poder llamarla y obtener las cosas desde fuera de la clase.


void Rectangulo::GetValor(double &x, double &y)
{
x = x_;
y = y_;
}
07-06-2013 12:34
Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
nutters Sin conexión
Profesor del Modulo A
Winter is comming!
*****

Ing. Electrónica
Facultad Regional Buenos Aires

Mensajes: 332
Agradecimientos dados: 61
Agradecimientos: 450 en 19 posts
Registro en: Sep 2012
Mensaje: #9
RE: [Info 2] Problema con herencia
Claro, pasa que la idea era hacer el constructor por referencia (pasarle un objeto figura y que lo cree en base a eso) y no pasarle dato por dato =P, porque ese ya lo tengo hecho

[Imagen: 940c7f292a23ac2bfeb007a11ed0c.png]
07-06-2013 12:42
Visita su sitio web Encuentra todos sus mensajes Agregar agradecimiento Cita este mensaje en tu respuesta
Buscar en el tema
Enviar respuesta 




Usuario(s) navegando en este tema: 1 invitado(s)