2008-10-15 18 views
10

tengo código como este:¿Cómo se marca una plantilla de estructura como amigo?

template <typename T, typename U> struct MyStruct { 
    T aType; 
    U anotherType; 
}; 

class IWantToBeFriendsWithMyStruct 
{ 
    friend struct MyStruct; //what is the correct syntax here ? 
}; 

¿Cuál es la sintaxis correcta para dar amistad a la plantilla?

Respuesta

17
class IWantToBeFriendsWithMyStruct 
{ 
    template <typename T, typename U> 
    friend struct MyStruct; 
}; 

Funciona en VS2008 y permite a MyStruct acceder a la clase.

+0

fresco! eso funciona (no puedo votar todavía, lo haré cuando esté registrado) – David

+0

Tenga en cuenta que esto le da a todos los tipos de acceso de MyStruct a IWantToBeFriends, también es posible otorgar especializaciones específicas de acceso a MyStruct. –

+0

Funciona en g ++ también. –

7

Según this site, la sintaxis correcta sería

class IWantToBeFriendsWithMyStruct 
{ 
    template <typename T, typename U> friend struct MyStruct; 
} 
Cuestiones relacionadas