Bonsoir,
Je bosse sur une classe lisant et écrivant des images en niveaux de gris et couleurs.
J'ai donc commencé à la coder en template pour me faciliter la tâche
J'essaye de faire une spécialisation sur une fonction membre mais je reçoit l'erreur :
Il me semble que ça se passe au niveau de l'édition des liens.Image.tpp|52|multiple definition of `Image<unsigned char>::writePGM(std::basic_ostream<char, std::char_traits<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)'|
Voici le code :
Image.h :
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
19
20
21
22
23
24
25
26
27
28
29
30
31 typedef unsigned char ubyte; typedef unsigned short ushort; typedef unsigned int uint; #include <stdexcept> #include <iostream> #include <fstream> #ifndef IMAGE_H #define IMAGE_H template <typename T> class Image { ushort m_width, m_height; T *m_array; Image(); public: Image(ushort, ushort); Image(const Image&); ~Image(); void printImage(); void writePGM(std::ostream&, std::string); static Image<ubyte>* readPGM(std::istream&); }; #include "../src/Image.tpp" #endif
Code.tpp:
J'ai pourtant cherché mais je retrouve cette syntaxe à chaque fois, j'ai du louper un truc...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 template <> void Image<ubyte>::writePGM(std::ostream& os, std::string name) { //écriture de l'image } template <> Image<ubyte>* Image<ubyte>::readPGM(std::istream& is) { //lecture de l'image }
Merci d'avance![]()
Partager