Bonjour à tous,
J'essaye de déclarer une fonction fill() comme ceci :
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 template <typename T> void fill(T* 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
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) { }
Ma question est donc comment spécialiser une classe de traits avec un template et non un type/une classe standard ?
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 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*)
Merci d'avance![]()
Partager