2008-10-15 9 views
10

J'ai le code comme ceci:Comment marquer un modèle struct comme ami?

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

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

Quelle est la syntaxe correcte pour donner l'amitié au modèle?

Répondre

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

Fonctionne dans VS2008 et permet à MyStruct d'accéder à la classe.

+0

Cool! cela fonctionne (je ne peux pas encore voter, je le ferai lors de l'enregistrement) – David

+0

Notez que cela donne à tous les types d'accès MyStruct à IWantToBeFriends, il est également possible d'accorder des spécialisations spécifiques de l'accès MyStruct. –

+0

Cela fonctionne également en g ++. –

7

Selon this site, la syntaxe correcte serait

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