porque no esta aplicándose la amistad entre las clases calculo y persona?

Iniciado por DANXD, 10 Octubre 2017, 03:03 AM

0 Miembros y 1 Visitante están viendo este tema.

DANXD

Hola, alguien sabe porque no esta aplicándose la amistad entre las clases calculo y persona?
El error es:  "la variable "hrs" no esta declarada"
Código (cpp) [Seleccionar]
#include <stdlib.h>
#include <iostream>
using namespace std;
class persona
{
   private:
   char nombre[30],sexo[3];
   int edad;
   int hrs;
         
   public:
        friend class calculo;
       virtual void pide()
       {
           cout<<"\nNombre: ";
           cin>>nombre;
           cout<<"\nEdad: ";
           cin>>edad;
           cout<<"\nSexo: ";
           cin>>sexo;
           cout<<"\nHoras: ";
           cin>>hrs;
       }
       virtual void imprime()
       {
           cout<<"\nNombre: "<<nombre;
           cout<<"\nEdad: "<<edad;
           cout<<"\nSexo: "<<sexo;
           cout<<"\nHoras: "<<hrs;
       }
}
;
class calculo
{
   private:
       persona p;
   public:
      void calculap()
{
   cout<<"\nEl salario del profesor es: "<<hrs*600;
}
void calculal()
{
   cout<<"\nEl salario del alumno es: "<<hrs*500;
}
}
;
class profesor:public persona
{
   char titulo[30];
   public:
       void pide()
       {
           cout<<"\nTitulo: ";
           cin>>titulo;
       }
       void imprime()
       {
           cout<<"\nTitulo: "<<titulo<<endl;
       }
}
;
class alumno:public persona
{
   char situacion[30];
   public:
       void pide()
       {
           cout<<"\nSituacion academica: ";
           cin>>situacion;
       }
       void imprime()
       {
           cout<<"\nSituacion academica: "<<situacion<<endl;
       }
}
;

main()
{
   int opc;
   persona *p1,*p2,*p3;
   persona o1;
   profesor o2;
   alumno o3;
   calculo o4;
   p1=&o1;
   p2=&o2;
   p3=&o3;
   cout<<"\nSalario a pagar";
   cout<<"Elige: \n1.Profesor\n2.Alumno\n";
   cin>>opc;
   if(opc==1)
   {
   cout<<"\nProfesor ";
   p1->pide();
   p2->pide();
   p1->imprime();
   p2->imprime();
   o4.calculap();
   system("pause");
}
if(opc==2)
{
   cout<<"\nAlumno ";
   p1->pide();
   p3->pide();
   p1->imprime();
   p3->imprime();
   o4.calculal();
   system("pause");
}
}




· Los códigos deben ir en etiquetas GeSHi
· Los títulos deben ser descriptivos
>aquí las reglas del foro
-Engel Lex

JavierScars

Intenta sacando de allí la "friend class calculo" es decir colócala al inicio de la clase, sin ningún nivel de acceso
Usa lo malo de la vida a tu favor, escala montañas de problemas para deslizarte sobre soluciones, derrumba muros de decepciones para encontrar la libertar de la felicidad,  y quema la leña del fracaso para calentarte con el éxito. Recuerda que sin la oscuridad la luz no brillaría tanto.