Problema con "friend"

9 views
Skip to first unread message

RFOG

unread,
May 28, 2018, 7:47:40 AM5/28/18
to cp...@googlegroups.com
Debe ser que yo no entiendo bien el tema de los "amigos" en C++, pero esto no me funciona:


Entiendo que si declaro un método privado de otra clase como amigo, debo poder acceder a él desde la clase en donde está la "amistad".

¿Podríais decirme en qué me equivoco? Porque yo no lo veo. El error que me da es que no se puede acceder al método privado de Amiga. Evidentemente, si lo hago público ya no necesito la amistad para nada.

(En el código original, el método "amgado" es estático, pero sin ser estático tampoco funciona)

dgutson .

unread,
May 28, 2018, 9:22:50 AM5/28/18
to cppba
2018-05-28 8:47 GMT-03:00 RFOG <rafael....@gmail.com>:
Debe ser que yo no entiendo bien el tema de los "amigos" en C++

Efectivamente :)
 
, pero esto no me funciona:


Entiendo que si declaro un método privado de otra clase como amigo, debo poder acceder a él desde la clase en donde está la "amistad".

¿Podríais decirme en qué me equivoco?

Vos sos una atractiva señorita, y dejarías que cualquiera te toque, o vos decidirías quién puede tocar tus partes íntimas y quién no?
Lo que vos hiciste es el deseo reprimido: si es así, yo declaro a cualquiera como mi amiga, entonces voy y la toco.

Sentido común mi amigo ;-)
 
Porque yo no lo veo. El error que me da es que no se puede acceder al método privado de Amiga. Evidentemente, si lo hago público ya no necesito la amistad para nada.

(En el código original, el método "amgado" es estático, pero sin ser estático tampoco funciona)

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

RFOG

unread,
May 28, 2018, 9:29:12 AM5/28/18
to cp...@googlegroups.com
¡Puñetas!

Entonces la definición de "friend" está mal en todos los lados en que lo he mirado. ¿No es friend para que una clase pueda acceder a las partes privadas (ejem) de otra?

El lun., 28 may. 2018 a las 15:22, dgutson . (<daniel...@gmail.com>) escribió:
2018-05-28 8:47 GMT-03:00 RFOG <rafael....@gmail.com>:
Debe ser que yo no entiendo bien el tema de los "amigos" en C++

Efectivamente :)
 
, pero esto no me funciona:


Entiendo que si declaro un método privado de otra clase como amigo, debo poder acceder a él desde la clase en donde está la "amistad".

¿Podríais decirme en qué me equivoco?

Vos sos una atractiva señorita, y dejarías que cualquiera te toque, o vos decidirías quién puede tocar tus partes íntimas y quién no?
Lo que vos hiciste es el deseo reprimido: si es así, yo declaro a cualquiera como mi amiga, entonces voy y la toco.

Sentido común mi amigo ;-)
 
Porque yo no lo veo. El error que me da es que no se puede acceder al método privado de Amiga. Evidentemente, si lo hago público ya no necesito la amistad para nada.

(En el código original, el método "amgado" es estático, pero sin ser estático tampoco funciona)

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

dgutson .

unread,
May 28, 2018, 9:32:02 AM5/28/18
to cppba
2018-05-28 10:29 GMT-03:00 RFOG <rafael....@gmail.com>:
¡Puñetas!

Entonces la definición de "friend" está mal en todos los lados en que lo he mirado. ¿No es friend para que una clase pueda acceder a las partes privadas (ejem) de otra?

No, te has de quedar con lo primero que dijiste :D
Si no,

class Daniel
{
    friend KimKardashian::...
};
y éste sería un mundo muy distinto.

Siento decírtelo Rafael, el mundo no funciona así...
 


El lun., 28 may. 2018 a las 15:22, dgutson . (<daniel...@gmail.com>) escribió:
2018-05-28 8:47 GMT-03:00 RFOG <rafael....@gmail.com>:
Debe ser que yo no entiendo bien el tema de los "amigos" en C++

Efectivamente :)
 
, pero esto no me funciona:


Entiendo que si declaro un método privado de otra clase como amigo, debo poder acceder a él desde la clase en donde está la "amistad".

¿Podríais decirme en qué me equivoco?

Vos sos una atractiva señorita, y dejarías que cualquiera te toque, o vos decidirías quién puede tocar tus partes íntimas y quién no?
Lo que vos hiciste es el deseo reprimido: si es así, yo declaro a cualquiera como mi amiga, entonces voy y la toco.

Sentido común mi amigo ;-)
 
Porque yo no lo veo. El error que me da es que no se puede acceder al método privado de Amiga. Evidentemente, si lo hago público ya no necesito la amistad para nada.

(En el código original, el método "amgado" es estático, pero sin ser estático tampoco funciona)

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

RFOG

unread,
May 28, 2018, 10:00:13 AM5/28/18
to cp...@googlegroups.com
:-(

Cuando llegue a casa miraré el Stroustrup. Pero vamos, si el compilador protesta, y lo que es más fiable, tu protestas, bien, no puedo acceder a las partes privadas de la Kardashian...

Y al final, lo más rápido es mover el método a la zona pública y listo. 

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

dgutson .

unread,
May 28, 2018, 10:02:42 AM5/28/18
to cppba
2018-05-28 11:00 GMT-03:00 RFOG <rafael....@gmail.com>:
:-(

Cuando llegue a casa miraré el Stroustrup. Pero vamos, si el compilador protesta, y lo que es más fiable, tu protestas, bien, no puedo acceder a las partes privadas de la Kardashian...

Y al final, lo más rápido es mover el método a la zona pública y listo. 

o mejor aún a la zona púbica.

De todas formas hay All Oracle del diseño.

 

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

dgutson .

unread,
May 28, 2018, 10:06:22 AM5/28/18
to cppba
acá va la versión con linker feliz :D

class RFOG;

class Kardashian
{
private:
    friend class RFOG;
    XXX xxx;
};

class RFOG
{
public:
  void serFeliz()
  {
      Kardashian k;
      open(k.xxx);
      // write ...
  }  
};

Por favor no me pidan que especifique a más bajo nivel estas clases.

RFOG

unread,
May 28, 2018, 10:24:10 AM5/28/18
to cp...@googlegroups.com
Valoro mucho tu amistad como para pedirte eso.  :-P

Más bien te cedo la clase Kardashian y te haces amiga de ella. :-D

Ahora sí que creo que lo he pillado...

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+un...@googlegroups.com.

dgutson .

unread,
May 28, 2018, 10:40:28 AM5/28/18
to cppba
2018-05-28 11:23 GMT-03:00 RFOG <rafael....@gmail.com>:
Valoro mucho tu amistad como para pedirte eso.  :-P

Más bien te cedo la clase Kardashian y te haces amiga de ella. :-D

Ahora sí que creo que lo he pillado...

el problema es que ELLA te declara amigo a vos, no a mí.... :(
(y al fin y al cabo, y debiendo dejar el machismo de lado, es lo que ella decide lo que importa)
 

Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?



--
Who’s got the sweetest disposition?
One guess, that’s who?
Who’d never, ever start an argument?
Who never shows a bit of temperament?
Who's never wrong but always right?
Who'd never dream of starting a fight?
Who get stuck with all the bad luck?

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

--
--
¿Eres miembro de "CyC++ Buenos Aires" verdad? Si no lo eres, has recibido este mesaje por error.
En caso de duda visita "http://groups.google.com/group/cppba"
---
Has recibido este mensaje porque estás suscrito al grupo "CyC++ Buenos Aires" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a cppba+unsubscribe@googlegroups.com.

Para acceder a más opciones, visita https://groups.google.com/d/optout.

dgutson .

unread,
May 28, 2018, 10:43:53 AM5/28/18
to cppba
Es más, la amistad no es transitiva.
Si VOS declarases amiga a Drew Barrymore, para que ella (si quisiera) pueda acceder a tus intimidades, por más que cuentes con el beneficio de Kim de que permite que la toques, Drew no puede tocar a Kim. El beneficio de la amistad es directo.
Si no, imaginate que...dale que va, todos te pedimos que vos nos declares amigos tuyos (qué buen amigo que sos!) así podemos ir y tocar a Kim Kardashian!

Reply all
Reply to author
Forward
0 new messages