chicotruss | Bonjour,
j'ai un problème de compilation sous gcc avec le code suivant:
Code :
- template < uint8_t IDXS, typename S, template <class> class CSS,
- uint8_t IDXD, typename D, template <class> class CSD >
- struct quantifier {
- inline static D scale(const S* src) {
- const D minD = CSD<D>::minValue(IDXD);
- const D delD = CSD<D>::maxValue(IDXD) - minD;
- const S delS = CSS<S>::maxValue(IDXS) - CSS<S>::minValue(IDXS);
- return D(minD + src[IDXS] * delD / delS);
- }
- };
- template < typename T >
- struct RGB {
- static inline uint8_t countSamples() { return 3; }
- static inline T minValue(uint8_t sample) { return 0; }
- static inline T maxValue(uint8_t sample) { return 1; }
- template < typename U >
- static inline void fromRGB(T* dest, const U* src) {
- dest[0] = quantifier<0,U,RGB,0,T,RGB>::scale(src);
- dest[1] = quantifier<1,U,RGB,1,T,RGB>::scale(src);
- dest[2] = quantifier<2,U,RGB,2,T,RGB>::scale(src);
- }
- template < typename U >
- static inline void toRGB(T* dest, const U* src) {
- fromRGB<U>(dest, src);
- }
- };
|
Pour les lignes 20 à 22, le message est:
Code :
- error: type/value mismatch at argument 3 in template parameter list for `template<unsigned char IDXS, class S, template<class> class CSS, unsigned char IDXD, class D, template<class> class CSD> struct quantifier'
- error: expected a class template, got `RGB<T>'
- error: type/value mismatch at argument 6 in template parameter list for `template<unsigned char IDXS, class S, template<class> class CSS, unsigned char IDXD, class D, template<class> class CSD> struct quantifier'
- error: expected a class template, got `RGB<T>'
- error: `scale' is not a member of `<declaration error>'
|
D'après le message, je suppose que le fait d'être à l'interieur de la classe RGB est interpreté comme RGB<T> et donc le paramètre passé a scale n'est plus un template.
Quelle est la syntaxe a employer pour passer RGB et pas RGB<T> ? Message édité par chicotruss le 07-04-2008 à 19:43:21
|