Bonjour,

J'ai du mal avec les templates. Je ne comprends pas pourquoi ce bout de code tout bête ne compile pas. J'ai beau me creuser la tête, chercher sur le web, essayer toutes les variantes que je peux imaginer... impossible de trouver la bonne syntaxe.

Par contre, si j'enlève la déclaration d'amitié, ca marche.

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
 
template <class Objet>
class Conteneur {
  public:
    // On veut ajouter le contenu des deux Conteneurs, et renvoyer le résultat par valeur
    friend const Conteneur<Objet> Add (const Conteneur<Objet> &Data1, const Conteneur<Objet> &Data2);
  protected:
    Objet *Data;
};
 
 
template <class Objet>
const Conteneur<Objet> Add (const Conteneur<Objet> &Data1, const Conteneur<Objet> &Data2) {
  Conteneur<Objet> Result;
  // ... utilise les données membres protégées de Data1 et Data2 pour déterminer Result ...
  return Result;
}
 
 
int main(int argc, char *argv[]) {
  Conteneur<int> Data1;
  Conteneur<int> Data2;
  Conteneur<int> R = Add (Data1, Data2);
  return 0;
}