bonjour,
je me demandais si l'on peut déclarer une struct dans une fonction et l'utiliser. Il me semblais que ca marché avec visual C++ mais avec GCC non...
par exemple, ce code :
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
 
#include <iostream>
#include <sstream>
#include <vector>
#include <algorithm>
#include <iterator>
 
 
struct chatchien
    {
    std::string operator() (const std::string & ss) {return ss == "chat" ? "chien" :ss;};
    } ;
 
int main(int argc,char ** argv)
    {
 
   std::istringstream is ("Un chat qui mange un chat");
   std::stringstream ios ;
 
    //parcoure le flux mot à mot et applique le foncteur chatchien. Stocke le resultat dans un autre flux en ajoutant un espace aprés chaque mot
    std::transform(std::istream_iterator<std::string>(is) ,std::istream_iterator<std::string>()
        ,std::ostream_iterator<std::string>(ios," "),chatchien() );
 
    std::string result;
 
    //récupère la phrase dans le flux il y aura un espace en trop la fin.
    std::getline(ios,result);
    std::cout<<result<<std::endl;
 
    return 0;
}
compile, mais si je déclare la struct dans le main, cela ne compile pas.... On est donc toujours obligé de déclarer les foncteurs hors des fonctions??