Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Peixoto

Erro no uso de herança

Recommended Posts

:rolleyes:

 

O programa abaixo está com erro de compilação por conta da herança. Isto aconteceu depois que eu fiz à classe a base se tornar a classe derivada. Matematicamente, faz mais sentido uma “circunferência” derivar um circula, que o contrário.

 

Quando fiz a inversão surgiram tantos erros, que não conseguir sanar. A lista de erros foi tão grande que não deu para listar. Gostaria de ressaltar, que antes de eu inverter as classes, ou seja, colocar Medidas_Circunferencia como base, tudo funcionava.

 

#include <iostream>
#include <cstdlib>
using namespace std;

class Medidas_Circunferencia
{
private:
        double Diametro;
        double Diametro_Circunferencia();
 public:
        void Mostra_Medidas_Circunferencia();
};

class Circulo: public  Medidas_Circunferencia
{
protected:
         double raio;
         static const double PI;
 private:
         double Area;
         double Area_Circulo();

public:
       //Circulo (double r);
       void Mostra_Area();
Circulo (double r){}: Medidas_Circunferencia(r); 
};

Circulo::Circulo(double r)
       :Area(0)
       {
         raio=r;
       }

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()
{

 cout << "Diametro da circunferencia:" << endl;
 Diametro=2*raio;
 return(Diametro);
}

void Medidas_Circunferencia::Mostra_Medidas_Circunferencia()
{
    double valor_diametro;

    valor_diametro=Diametro_Circunferencia();
    cout << valor_diametro << endl;
    return;
}

const double Circulo::PI=3.1416; //define a variável no
                                //escopo global

int main()
{
   //Circulo Circ(15);
   //Circ.Mostra_Area();

   Circulo  Medidas(15);
   Medidas.Mostra_Area();
    cout << endl;
   Medidas.Mostra_Medidas_Circunferencia();

   system ("pause");
   return 0;

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

double Medidas_Circunferencia::Diametro_Circunferencia()
{

 cout << "Diametro da circunferencia:" << endl;
 Diametro=2*raio;
 return(Diametro);
}

 

"raio" não está declarado em "Medidas_Circunferencia", e sim na classe filha. A classe mãe não consegue acessar as variáveis declaradas somente na filha.

 

Circulo (double r){}: Medidas_Circunferencia(r); 

 

O que você quis fazer aqui? Você está tentando chamar o construtor de Medidas_Circunferencia, sendo que não tem nenhum construtor declarado lá. Além disso, você está definindo a função aqui e logo mais abaixo.

 

Coloque somente a declaração dela aqui:

 

Circulo (double r); 

 

Aí deve resolver o seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.