template class : transtyping
Bonjour tout le monde,
j'ai une classe template my_int qui comme son nom ne l'indique pas peut etre instancier my_int<double> ou my_int<float>,
je voudrais faire un constructeur du type, a partir d'un my_int<double> me construit un my_int<float> mais je n'arrive pas à trouver la bonne syntaxe.
Voici mon fichier .h :
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
| template<typename T>
class my_int
{
public :
my_int(const T value_);
template<typename U>
my_int(const U value_);
template<typename U>
my_int(const my_int<U> other_int);
void add(const my_int<T> other_int);
void multi(const my_double<T> d);
T get();
void operator= (const my_double<T> d);
private :
T value;
static const char * class_name;
static const char * class_name1;
//friend void my_double<T>::add(const my_int<T> other_int);
friend void mult<>(my_double<T> &,const my_int<T> &,const my_double<T>&);
};
#include "my_int.hpp" |
et voici mon fichier hpp :
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 37 38 39 40 41 42 43 44 45
| #include "my_double.h"
template<typename U> class my_int;
template<typename T>
const char * my_int<T>::class_name = "faust_mat<T>::";
template<typename T>
const char * my_int<T>::class_name1 = "faust_mat1<T>::";
template<typename T>
my_int<T>::my_int(const T value_) : value(value_){}
template<typename T>
void my_int<T>::add(const my_int<T> other_int)
{
value += other_int.value;
}
template<typename T>
T my_int<T>::get()
{
return value;
}
template<typename U>
template<typename T>
my_int<T>::my_int(const my_int<U> other_int) : value((U) value_){};
template<typename U>
template<typename T>
my_int<T>::my_int(const U value_) : value((T) value_){}
template<typename T>
void my_int<T>::multi(const my_double<T> d)
{
value *= d.value;
}
template<typename T>
void my_int<T>::operator= (const my_double<T> d)
{
value = d.value;
} |
Merci d'avance