surcharge operator[] problème type retour
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
Code:
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; |
Je fais appel à l'opérateur [] dans une autre classe lorsque je veux lire/modifier la valeur:
Code:
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; |
Lors de l'appel à l'opérateur ligne16, ça va chercher l'opérateur ligne 12 de Image et ça me met:
Citation:
Y:\programs\normalisationPIXEbySTIM\src\Image\Image.hpp:23(=ligne 12): erreur : cannot convert 'std::vector<float>' to 'float' in return
Pourtant il me semble que tel que je l'ai écris ma surcharge renvoie un Tet pas un vecto<T> non?