2011-12-19 9 views
9

Tengo una clase de plantilla llamada RenderShader, también tengo una clase llamada Render. Me gustaría tener todas las instancias de la clase de plantilla RenderShader para ser amigos con Render. Además, el usuario puede hacer sus propias instancias de RenderShader por lo que no es posible enumerarlas todas en el archivo de encabezado principal. Por ejemplo:C++: ¿Es posible hacer amigos de todas las instancias de una clase de plantilla?

template<class vertdef> 
class RenderShader 
{ 
public: 
..... 
}; 

class Render 
{ 
    friend class RenderShader; 
public: 
    .... 
}; 

La sintaxis "amigo renderShader" está mal, hay una sintaxis correcta de lo que me gustaría hacer?

Respuesta

16
class Render 
{ 
    template<class vertdef> 
    friend class RenderShader; 
public: 
    .... 
}; 
+0

Eso funcionó en 3 de los 4 sistemas con los que estoy compilando mi código: Funcionó en VS2010 PC, VS2010 XBox360, Chrome Native-Client. No funcionó en el uso de g ++ (instalado con Dev-C++) para GP2XWiz. – KPexEA

+0

@KPexEA: La última vez que lo vi, Dev-C++ todavía viene con GCC 3.4.x, que es bastante cercano a lo antiguo en este momento. Intente actualizar MinGW a la versión actual (4.6.x). – ildjarn

+0

@KPexEA ¿Reenvió declarar la clase de plantilla? (la misma sintaxis que la declaración de amigo) –

Cuestiones relacionadas