Bonjour,
Je travaille avec fftw, dont le type complexe n'est autre qu'un tableau de deux éléments. Le problème est que j'ai créé une classe matrice templaté (oui parce que je manipule aussi des doubles etc.), la définition de cette classe est grosso modo la suivante :
Le problème c'est que si T = fftw_complex = double[2], les opérateurs renvoient un tableau et le compilateur considère ça comme une erreur (on ne peut pas vraiment luit en vouloir en même temps...). Du coup pour contourner le problème, je me demandais s'il était possible de faire un truc genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 template<typename T> class Matrix { public: .... T operator() (uint i, uint j) const; // lecture T& operator() (uint i, uint j); // écriture ... };
Merci d'avance.
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 template<typename T> class Matrix { public: .... template_if<T == fttw_complex> { std::complex<double> operator() (uint i, uint j) const; // lecture std::complex<double>& operator() (uint i, uint j); // écriture } template_else { T operator() (uint i, uint j) const; // lecture T& operator() (uint i, uint j); // écriture } ... };
Partager