07-06-2013, 00:01
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.
Ahora la clase figura:
El problema puntual lo tengo cuando implemento el constructor figura(const figura&);... es el siguiente codigo:
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?
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:
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()
{
std::cout << "Constructor figura copia: " << this << std::endl;
SetRadio(f.radio);
}
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?