Bonjour,
je tente de redefinir l'operateur= de ma classe template...j'ai regardé dans des bouquins et sur les forums mais je n'arrive pas à m'en sortir
je suis sur visual express 2005, sur un forum j'ai lu que l'utilisation des template merdent un peu avec express...
je poste le code des fois que j'ai fait une erreur sur l'utilisation!

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<u8 W,u8 I, bool S>
class test
{
private:
   u8 mw,mi;
       bool ms;
 
public:
   test()
           {
        mw=W;mi=I;ms=S;
   };
 
  test(const test &op)
          {
      mw=op.mw;
      mi=op.mi;
      ms=op.ms;
  };
 
       test(u8 Wi,u8 Ii, bool Si)
           {
      mw=Wi;
      mi=Ii;
      ms=Si;
   };
 
  ~test(){};
 
    test& operator=(const test  &val);
};
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
 
template<u8 W,u8 I, bool S>
test<W,I,S>& test<W,I,S>::operator=(const test &val)
{
    //blablabla
    return *this;
}
 
void main (int argc, char *argv[])
{
    test<8,8,true> gerard1;
    test<5,1,false> gerard2;
 
    gerard1=gerard2;  :evilred:
}
==>
erreur de compil:
src\ac_fixed_dem_test_main.cpp(81) : error C2679: '=' binaire : aucun opérateur trouvé qui accepte un opérande de partie droite de type 'test<W,I,S>' (ou il n'existe pas de conversion acceptable)
with
[
W=5,
I=1,
S=false
]
t:\G3_ALGO_FIXED\2\algo_simulator_2g\g3_fixed2_loc_eng\algo_simulator_2g\simulator_2g_testu\ac_fixed_dem_test\ince\type_ac_fixed.hpp(1261): peut être 'test<W,I,S> &test<W,I,S>::operator =(const test<W,I,S> &)'
with
[
W=8,
I=8,
S=true
]
lors de la tentative de mise en correspondance de la liste des arguments '(test<W,I,S>, test<W,I,S>)'
with
[
W=8,
I=8,
S=true
]
and
[
W=5,
I=1,
S=false
]

merci d'avance

====