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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
| #include <iostream>
/*base de ta class*/
template< typename A, typename B>
class T_base
{
public:
virtual void MaFonction() =0 ;
void MaFonction2()
{
std::cout<<"azeaze"<<std::endl;
}
};
/*class en general*/
template< typename A, typename B>
class T :public T_base<A,B>
{
public:
void MaFonction()
{
std::cout<<"? , ?"<<std::endl;
}
};
/*cas du ? , int */
template< typename A>
class T<A,int> :public T_base<A,int>
{
public:
void MaFonction()
{
std::cout<<"? , int"<<std::endl;
}
};
/*cas du int , ? */
template< typename B>
class T<int,B> :public T_base<int,B>
{
public:
void MaFonction()
{
std::cout<<"int , ?"<<std::endl;
}
};
/*cas du int , int */
template<>
class T<int,int> :public T_base<int,int>
{
public:
void MaFonction()
{
std::cout<<"int , int"<<std::endl;
}
};
int main(int argc, char* argv[])
{
T<int,int> t;
t.MaFonction();
t.MaFonction2();
T<float,int> t1;
t1.MaFonction();
t1.MaFonction2();
T<int,float> t2;
t2.MaFonction();
t2.MaFonction2();
return 0;
} |
Partager