Bonjour à tous,

J'essaye de déclarer une fonction fill() comme ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
template <typename T>
void fill(T* image);
Je tente d'implémenter la fonction de la manière suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
template <typename T>
void AVPictureAdapter::fill(T* image) {
 
}
 
template <typename U>
void AVPictureAdapter::fill< BSPF_IMAGE::Image<U> >(BSPF_IMAGE::Image<U>* image) {
 
}
Le problème est que la deuxième version ne fonctionne pas, j'ai l'erreur suivante :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
 
AVPictureAdapter.t:9:80: erreur: function template partial specialization ‘fill<BSPF_IMAGE::Image<T> >’ is not allowed
AVPictureAdapter.t:9:6: erreur: prototype forvoid BSPF_FFMPEGIO::AVPictureAdapter::fill(BSPF_IMAGE::Image<T>*)’ does not match any in class ‘BSPF_FFMPEGIO::AVPictureAdapter’
AVPictureAdapter.h:39:12: erreur: candidates are: template<class T> void BSPF_FFMPEGIO::AVPictureAdapter::fill(T*)
AVPictureAdapter.h:31:12: erreur:                 void BSPF_FFMPEGIO::AVPictureAdapter::fill(BSPF_FFMPEGIO::PixelFormat_t, uint8_t*, int, int)
AVPictureAdapter.h:26:12: erreur:                 void BSPF_FFMPEGIO::AVPictureAdapter::fill(BSPF_IMAGE::ImageType, BSPF_UTILS::bspf_buffer*)
Ma question est donc comment spécialiser une classe de traits avec un template et non un type/une classe standard ?

Merci d'avance