Déclarer un paramètre template comme friend
Bonjour,
J'aimerais, dans une classe template, déclarer que la classe du paramètre template est amie.
Exemple :
Code:
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 32 33 34 35 36
| #include <iostream>
//------------------------------------------------------------------------------
template<class T>
class A
{
friend class T; // problème ici
private:
void f( const T& t ) { t.g(); }
}; // class A
//------------------------------------------------------------------------------
class B
{
friend class A<B>;
public:
void h()
{
A<B> a;
a.f( *this );
}
private:
void g() const { std::cout << "ok" << std::endl; }
}; // class B
//------------------------------------------------------------------------------
int main()
{
B b;
b.h();
return 0;
} |
Mais le compilateur fait la tête :
Citation:
Envoyé par g++
erreur: une clé de classe doit être utilise lors de la déclaration d'un ami
Est-ce que ce que je veux faire est faisable ou dois-je trouver une autre solution ?
Merci