Problème de compilation avec les traits (g++)
Bonjour à tous,
J'essaye de déclarer une fonction fill() comme ceci :
Code:
1 2 3
|
template <typename T>
void fill(T* image); |
Je tente d'implémenter la fonction de la manière suivante :
Code:
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:
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 for void 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 :)