Bonjour,
Je souhaite créer une fonction (Peek) qui soit friend d'une classe template (MyClass), avec une relation one-to-one. Après avoir pas mal cherché sur Internet, j'ai cette écriture ... qui ne compile pas (C:B). Le message d'erreur est "expected initialization before '<' ".
Est-ce parce que la classe template doit être spécialisée avant (mais cela me semble surprenant). Avez-vous une idée ?

La classe:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
template <typename T>
class MyClass
{
    public:
        MyClass(T aT);
        void Show();
 
        friend void Peek(const MyClass<T> &mC);
 
        virtual ~MyClass();
    private:
        T t;
};
Mon main avec la fonction:
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
 
#include "MyClass.h"
 
using namespace std;
 
template <typename T> class MyClass;
 
template <>
void Peek<typename T>(const MyClass &mC)
{
    cout << "In Peek" << mC.t << endl;
}
 
int main()
{
    MyClass<int> myC(3);
 
    Peek(myC);
 
    return 0;
}