Peixoto 0 Denunciar post Postado Janeiro 9, 2012 :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
Renan Greinert 0 Denunciar post Postado Janeiro 26, 2012 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