Como hago esto?
template <int n> class x { };
class y { friend class x; };
Sin tener que poner friend class x<1>, friend class x<2> and so ...
O sea con el VC6 no puedo ...
Con el VC7 o Express cambia la mano?
O es algo ya del lenguaje?
O donde puedo averiguar sobre esto?
Saludos y gracias
Lo que puedes hacer es poner un valor por defecto a n:
template <int n=42> class x { };
class y { friend class x; };
Pero seran friend todos o solo el por defecto?
bueno, eso creo que es cuestion de probar ...
Saludos
y:
template< class T> class y { friend class T;};
y luego:
y<x<123> > var;
Eso es interesante, pero no me sirve.
La idea es:template <int n> class x { };
class y { friend class x; };
Donde Y es un polimorfico que no debe tener acceso a X y X debe si debe tener acceso a Y
Para que se entienda mas, Y es un objeto y X es un manager.
Aun no he podido probar pero si le das un valor por defecto he de suponer que te hará amigo a X<valor por defecto> tan solo ... y me pierdo de tener un monton de amigos :(
Hace unos poco segundos se me ocurrio que puede ser solución agregar un base Z tal que:
class z { <aqui todos los accesos a y a traves de funciones> };
template <int n> class x : z { };
class y { friend class z; };
Este metodo me permitiria hacer grupos de amigos con solo una declaracion de amistad pero agrega codigo extra y me gustaria encontrar algo mejor. Si lo encuentro despues lo comento, aun que parece que no lo hay.
Hace tiempo ya de este hilo pero por si sigues buscando la respuesta:
template <int n> class x { };
class y { template <class> friend class x; };
No habia ledio esta respuesta ... bueno lo tendré que probar.