Peux-tu coller tous les appels à fabrique.ajoute() ?
Version imprimable
Peux-tu coller tous les appels à fabrique.ajoute() ?
Pour aller plus vite :
Par avance merci de votre aide,Code:
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 int main(int argc, char *argv[]) { Fabrique fabrique; fabrique.Ajoute("default", new default_langage); fabrique.Ajoute("cpp", new CPP); if(argc > 1) { Parser* Parseur = fabrique.Apppel(argv[1]); if(Parseur->existe) { boost::spirit::parse_info<> info = boost::spirit::parse(argv[2], *Parseur, boost::spirit::space_p); } else { std::cout << argv[2] << std::endl; } } else { std::cout << "Pas de texte a mettre en forme" << std::endl; } // on valide l'execution du programme return 0; }
PS : oui, je connais l'using namespace, mais j'aime pas ^^
Diantre, je cale…
Ça me saute pas aux yeux… essaie ça pour voir :
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13 int main(int argc, char *argv[]) { if(argc > 1) { CPP cpp; boost::spirit::parse_info<> info = boost::spirit::parse(argv[2], cpp, boost::spirit::space_p); } return 0; }
Non, toujours le même problème...
Ca me parrait bien toufu...
Merci par avance de votre aide
Comment ça, même problème ? Exactement le même message d'erreur que le post #16 ?
Comment est-ce possible d'avoir le même message d'erreur alors qu'on n'utilise plus la classe Parser :koi:
Ou alors tu t'en sers ailleurs dans ton code…
Peux-tu coller le message d'erreur, que je voie ça ?
Bah, je vais te faire un zip, mais je m'en sert nul part ailleur
Message d'Erreur :
ZIPCitation:
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\boost\spirit\home\classic\core\non_terminal\impl\grammar.ipp|178|error: cannot allocate an object of type `Parser::definition<boost::spirit::scanner<const char*, boost::spirit::scanner_policies_t> >'|
C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\include\boost\spirit\home\classic\core\non_terminal\impl\grammar.ipp|178|error: because the following virtual functions are abstract:|
\parser.h|46|error: const boost::spirit::rule<ScannerT, boost::spirit::nil_t, boost::spirit::nil_t>& Parser::definition<ScannerT>::start() const [with ScannerT = boost::spirit::scanner<const char*, boost::spirit::scanner_policies_t>]|
Je ne sais pas si tu es au courant, mais Firefox marque ton site comme étant une contrefaçon.
Enfin… le problème, je pense, vient de la fonction boost::spirit::parse(), qui est template. Un de ses arguments template est le type de parser que tu veux lui donner. C'est cette fonction qui essaie d'instancier un objet de type Parser::definition (la preuve, il suffit de commenter l'appel pour que le code soit compilable).
Tu ne peux pas faire de polymorphisme dynamique avec cette fonction. Il va donc falloir que tu fasses sans interface…
ok, merci, tanpis