Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problemas con friend

Estas en el tema de Problemas con friend en el foro de C/C++ en Foros del Web. Hola a todos, quiesiera que por favor me hecharan una mano; tengo el siguiente codigo, usando friend pero nose cual sera el error. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); ...
  #1 (permalink)  
Antiguo 18/12/2014, 18:07
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 1 mes
Puntos: 0
Problemas con friend

Hola a todos, quiesiera que por favor me hecharan una mano; tengo el siguiente codigo, usando friend pero nose cual sera el error.

Código C++:
Ver original
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. class ejemplo2;
  6.  
  7.  
  8. class ejemplo{
  9. private:
  10.     int a,b;
  11. public:
  12.     void setA(int a){
  13.         this->a=a;
  14.     }
  15.     int getA(){
  16.         return a;
  17.     }
  18.     friend void ejemplo2::setC(ejemplo ji);
  19. };
  20.  
  21.  
  22.  
  23. class ejemplo2{
  24. private:
  25.     int c,d;
  26. public:
  27.     void setC(ejemplo ji){
  28.         cout<<"numero: "<<ji.a;
  29.     }
  30. };
  31.  
  32.  
  33.  
  34.  
  35. int main()
  36. {
  37.     ejemplo ej;
  38.     ejemplo2 jj;
  39.     ej.setA(20);
  40.     jj.setC(ej);
  41.     return 0;
  42. }
  #2 (permalink)  
Antiguo 18/12/2014, 19:09
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con friend

Tendrías que declarar las clases en orden inverso:

Código:
#include <iostream>

using namespace std;

class ejemplo;

class ejemplo2
{
private:
    int c,d;
public:
    void setC(ejemplo ji);

};

class ejemplo
{
private:
    int a,b;
public:
    void setA(int a)
    {
        this->a=a;
    }
    int getA()
    {
        return a;
    }

    friend void ejemplo2::setC(ejemplo ji);
};


void ejemplo2::setC(ejemplo ji)
{
    cout<<"numero: "<<ji.a;
}

int main()
{
    ejemplo ej;
    ejemplo2 jj;
    ej.setA(20);
    jj.setC(ej);
    return 0;
}
  #3 (permalink)  
Antiguo 18/12/2014, 19:33
 
Fecha de Ingreso: febrero-2014
Mensajes: 107
Antigüedad: 10 años, 1 mes
Puntos: 0
Pregunta Respuesta: Problemas con friend

Cita:
Iniciado por lareto Ver Mensaje
Tendrías que declarar las clases en orden inverso:

Código:
#include <iostream>

using namespace std;

class ejemplo;

class ejemplo2
{
private:
    int c,d;
public:
    void setC(ejemplo ji);

};

class ejemplo
{
private:
    int a,b;
public:
    void setA(int a)
    {
        this->a=a;
    }
    int getA()
    {
        return a;
    }

    friend void ejemplo2::setC(ejemplo ji);
};


void ejemplo2::setC(ejemplo ji)
{
    cout<<"numero: "<<ji.a;
}

int main()
{
    ejemplo ej;
    ejemplo2 jj;
    ej.setA(20);
    jj.setC(ej);
    return 0;
}

Que tiene que ver el orden de las clases?? Quede Perdido...?
  #4 (permalink)  
Antiguo 18/12/2014, 21:12
lareto
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Problemas con friend

Porque al declarar
friend void ejemplo2::setC(ejemplo ji);
en la clase ejemplo,

la clase ejemplo2 no puede ser un tipo incompleto (forward declared).

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:46.