Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Pogacha en 23 de Agosto de 2006, 09:35:00 PM

Título: template friend
Publicado por: Pogacha en 23 de Agosto de 2006, 09:35:00 PM
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
Título: template friend
Publicado por: LC0 en 24 de Agosto de 2006, 09:30:34 PM
Lo que puedes hacer es poner un valor por defecto a n:

template <int n=42> class x { };
class y {  friend class x; };
Título: template friend
Publicado por: Pogacha en 24 de Agosto de 2006, 09:48:54 PM
Pero seran friend todos o solo el por defecto?
bueno, eso creo que es cuestion de probar ...
Saludos
Título: template friend
Publicado por: ethernet en 24 de Agosto de 2006, 11:25:23 PM
y:

template< class T> class y { friend class T;};

y luego:


y<x<123> > var;
Título: template friend
Publicado por: Pogacha en 25 de Agosto de 2006, 02:41:04 AM
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.
Título: template friend
Publicado por: hotcamus en 05 de Septiembre de 2006, 09:58:21 PM
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; };
Título: template friend
Publicado por: Pogacha en 08 de Septiembre de 2006, 01:16:55 PM
No habia ledio esta respuesta ... bueno lo tendré que probar.