Bonjour,
je suis en blocage complet sur boost spirit,j'essaye de lancer une fonction membre d'un objet quand une régle est parsé :
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
struct ArgGrammar : qi::grammar<std::string::iterator, qi::blank_type>
{
	ArgGrammar(Arguments & O) : ArgGrammar::base_type(start)
	{	
		using qi::float_;
		using qi::uint_;
		using qi::char_;
		using qi::eol;
		using qi::eps;
		using qi::blank;
		using namespace boost;
 
		param = "\""  >> *(char_[push_back(phoenix::ref(paramb), qi::_1)] - "\"") >> "\"" >> 
		eps[bind(&Arguments::maFunc, O, qi::_1)("un parametre de type string")];
 
		start = *(l | d | a | i);
	}	
 
	qi::rule<std::string::iterator, qi::blank_type> start, l, d, a, i, param, hour;
	std::string paramb;
	float hd, md, ha, ma;
};
Donc j'aimerais que lorsqu'il parse la régle param, il lance la fonction membre tel que O.maFunc("un parametre de type string"), seulement ca ne fonctionne pas, avez vous une idée du fonctionnement de bind avec spirit pour les fonctions membre, sachant que le paramétre est fixe (ne dépend pas de ce que je parse).

Merci de votre attention à mon post.