2 votes

Des modèles qui se lient d'amitié

Tengo un ResourcePtr<T> et un modèle de classe ResouceManager<T> modèle. Je veux que les deux se lient d'amitié. Si je fais ce qui suit, j'obtiens une erreur de compilation ; comment puis-je y remédier ?

template<class T>
class ResourcePtr
{
    friend class ResourceManager<T>;
};

template<class T>
class ResourceManager
{
    friend class ResourcePtr<T>;
};

erreur C2059 : erreur de syntaxe : '<'
Erreur C2238 : jeton(s) inattendu(s) précédant ';'.

6voto

AProgrammer Points 31212

Comme d'habitude pour les choses mutuelles : déclarer l'une avant la définition de l'autre.

template<class T>
class ResourceManager;

template<class T>
class ResourcePtr
{
    friend class ResourceManager<T>;
};

template<class T>
class ResourceManager
{
    friend class ResourcePtr<T>;
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X