[Resolvido] Problema no uso de herança
:(
Veja o programa:
#include <iostream>
using namespace std;
class Circulo
{
private:
double Area,raio;
static const double PI;
double Area_Circulo();
public:
Circulo (double r);
void Mostra_Area();
double Pega_raio (); // para pegar o valor do raio e
//permitir acesso da classe derivada
};
class Medidas_Circunferencia : public Circulo
{
private:
double Diametro;
double Diametro_Circunferencia();
public:
Medidas_Circunferencia(double r):Circulo (r){};
void Mostra_Medidas_Circunferencia();
};
Circulo::Circulo(double r)
:Area(0)
{
raio=r;
}
double Circulo::Pega_raio ()
{
return (raio);
}
double Circulo::Area_Circulo()
{
cout << "Area area do Circulo." << endl;
Area=(raio*raio)*PI; // Área do Circulo
return (Area);
}
void Circulo::Mostra_Area()
{
Area_Circulo();
cout << Area << endl;
return;
}
double Medidas_Circunferencia::Diametro_Circunferencia()
{
Pega_raio(); //passa
cout << "Diametro da circunferencia:" << endl;
Diametro=2*raio;
return(Diametro);
}
void Medidas_Circunferencia::Mostra_Medidas_Circunferencia()
{
Diametro_Circunferencia();
return;
}
const double Circulo::PI=3.1416; //define a variável no
//escopo global
int main()
{
Medidas_Circunferencia Medidas(15);
Medidas.Mostra_Area();
cout << endl;
system ("pause");
return 0;
}
Se os parâmetros-padrão de uma função membro tem de ser constantes (Soube disso depois ), então fiz:
double Circulo::Pega_raio ()
{
return (raio);
}
busquei fazer de Pega_raio () apenas uma função de acesso para retornar raio, visando seu uso na derivada. Também tirei o acento colocado indevidamente.
Mesmo assim ocorreram os seguintes erros:
D:\Teste\heranca.cpp In member function double Medidas_Circunferencia::Diametro_Circunferencia()':8 D:\Teste\heranca.cpp double Circulo::raio' is private
60 D:\Teste\heranca.cpp within this context
8 D:\Teste\heranca.cpp `double Circulo::raio' is private
60 D:\Teste\heranca.cpp within this context
Onde estou errando ?
Obrigado
Discussão (10)
Carregando comentários...