¿Es esto legal? Si no, ¿el siguiente código lo permitirá?Acceder a elementos privados del objeto de la misma clase
class Foo
{
friend class Foo;
}
¿Es esto legal? Si no, ¿el siguiente código lo permitirá?Acceder a elementos privados del objeto de la misma clase
class Foo
{
friend class Foo;
}
Eso es redundante. Foo ya tiene acceso a todos los miembros de Foo. Dos objetos Foo pueden acceder a los miembros de cada uno.
class Foo {
public:
int touchOtherParts(const Foo &foo) {return foo.privateparts;}
private:
int privateparts;
};
Foo a,b;
b.touchOtherParts(a);
El código anterior funcionará muy bien. B accederá a un miembro de datos privados.
Es redundante e innecesario. Por otra parte, me sale el siguiente mensaje de advertencia en g ++
warning: class ‘Foo’ is implicitly friends with itself
Sí es legal que un objeto de clase Foo
tener acceso a los miembros privados de otro objeto de la clase Foo
. Esto es frecuentemente necesario para cosas como la construcción y asignación de copias, y no se requiere ninguna declaración especial de amigos.
Las clases de amistad tienen sentido si son plantillas, ya que cada creación de instancias con distintos parámetros es una clase diferente.
¿Por qué necesita esto? – ybungalobill