Bonjour,

Je rencontre un petit souci : je n'arrive pas à donner une relation d'amitié à une classe héritant d'une autre classe. Voici le code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
template<typename T> class A
{
     public :
    A()
    {
        T();
    }
};
 
template<typename T> class B : public A<T>
{
     public :
    B(){}
};
 
class C
{
    // Problème ici : comment donner l'amitié à A<C> à partir d'ici ?
    friend class B<C>::A<C>; // Mauvaise syntaxe
 
    private :
    C(){}
    ~C(){}
 
    public :
    static B<C> * Create()
    {
        return new B<C>;
    }
};
En fait, je pourrai très bien me débrouiller sans mais j'aimerai rendre le constructeur / destructeur de C privés pour forcer le développer à renvoyer un pointeur sur C. Quelqu'un pourrait-il me dire si c'est possible et si oui comment faire ? Merci d'avance


Nico.