Es una duda que tengo en programación C++, en que casos es mejor definir una función como amiga de la clase??
Un saludo.
Por lo general, algo a evitar salvo que sea necesario. Esa es la regla que tendría en cuenta.
friend rompe reglas de encapsulamiento, y si razón de ser es ayudar a resolver problemas muy específicos que no se resolverían de otro modo (o que requerirían código innecesario, en fin, hay muchas posibilidades).
En cualquier caso, la definición es clara: una clase o función es amiga de otra cuando necesita acceder a determinada información <ella y solo ella> (de lo contrario, bastaría con poner esa información pública).
Así que, cuando te encuentres el punto en el cual necesitas lo antes dicho, y no hay otro camino lógico para lograrlo, es cuando usarías friend.