Bonjour,
J'écris un programme dans lequel j'ai une classe image template qui contient un pointeur vers un vecteur de T. Je voudrais surcharger l’opérateur [] mais je n'arrive pas à compiler.
classe Image
Je fais appel à l'opérateur [] dans une autre classe lorsque je veux lire/modifier la valeur:
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 template<typename T> class Image { public: Image(vector<T> &data, size_t width, size_t height, size_t depth); ~Image(); vector<size_t> getSize() const {return m_size;} T& operator[](size_t const index) {return this->m_data[index];} T operator[](size_t const index) const {return this->m_data[index];} private: vector<T> *m_data; vector<size_t> m_size;
Lors de l'appel à l'opérateur ligne16, ça va chercher l'opérateur ligne 12 de Image et ça me met:
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 template<typename T> bool ConvFilter<T>::applyTo(Image::Image<T>& dest, const Image::Image<T> &src) { if (dest.getSize() != src.getSize()) { cerr << "input and output Images have not the same size" << endl; return false; } vector<size_t> size = src.getSize(); for (size_t k=0,index=0; k<size[2]; ++k) for ( size_t j=0; j<size[1]; ++j ) for ( size_t i=0; i<size[0]; ++i, ++index) cout << src[index] << endl;
Pourtant il me semble que tel que je l'ai écris ma surcharge renvoie un Tet pas un vecto<T> non?Y:\programs\normalisationPIXEbySTIM\src\Image\Image.hpp:23(=ligne 12): erreur : cannot convert 'std::vector<float>' to 'float' in return
Partager