Bonjour,
Voilà, j'ai un petit problème avec la fonction transform pour appliquer un foncteur...
Mon code complilait lorsque j'utilisait un vecteur, mais depuis que je l'ai remplacé par un set, le compilo gueule...
#ifndef IMAGE_H
#define IMAGE_H
#include <iostream>
#include <string>
#include <set>
#include <iterator>
#include <cctype>
#include <algorithm>
using namespace std;
class Image{
private:
set<string> mots_cles;
string nom;
string datepdv;
float taille;
int largeur;
int hauteur;
public:
//conversion en minuscules des mots clés :
class to_lower{
public:
inline string operator()(string& s){
int cpt = 0;
while ( s[cpt] != '\0' ){
if ( ( s[cpt] >= 'A' ) && ( s[cpt] <= 'Z' ) ) s[cpt] += 32;
cpt++;
}
return(s);
}
};
inline void mots_cles_en_minuscules(){
transform(mots_cles.begin(), mots_cles.end(), mots_cles.begin(), to_lower());
}
};
#endif
Voici l'erreur que me met le compilateur (pour info j'utilise dev C++ sous vista) :
C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algo.h In function `_OutputIterator std::transform(_InputIterator, _InputIterator, _OutputIterator, _UnaryOperation) [with _InputIterator = std::_Rb_tree_const_iterator<std::string>, _OutputIterator = std::_Rb_tree_const_iterator<std::string>, _UnaryOperation = Image::to_lower]':
789 C:\Dev-Cpp\include\c++\3.4.2\bits\stl_algo.h no match for call to `(Image::to_lower) (const std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)'
note F:\Pas musique\IUT 2A\C++\imagestl\image.h:112 candidates are: std::string Image::to_lower::operator()(std::string&)
Merci à ceux qui voudront bien me consacrer un peu de leur temps.