Bonjour,
Je me suis faitt (ou plutôt je suis en train de faire) une petite classe pour gérer plus facilement les arguments passés au programme en passant par la fonction C getopt(). A peu près tout fonctionne, il n'y a que ce petit bout de code qui coince :
std::string shortopts;
opts_map::iterator it;
struct option long_options[opts.size()];
int i = 0;
for(it=opts.begin();it!=opts.end();it++) {
shortopts += (*it).first + (*it).second->_semicolon();
longopts = {(*it).second->_longopt().c_str(), (*it).second->_argtypeid(), NULL, (*it).first};
i++;
}
long_options = {0, 0, 0, 0};
En effet, g++ se plaint d'une erreur de syntaxe avant le { de longopts = {...}. Apparament, les tableaux de struct ne fonctionnent pas. Comment puis-je contourner ce problème ? Mon but est de créer dynamiquement un tableaux de ce style (pris de la dernière version cvs de gaim) : struct option long_options[] = {
{"acct", no_argument, NULL, 'a'},
{"help", no_argument, NULL, 'h'},
{"user", required_argument, NULL, 'u'},
{"file", required_argument, NULL, 'f'},
{"debug", no_argument, NULL, 'd'},
{"version", no_argument, NULL, 'v'},
{"session", required_argument, NULL, 's'},
{0, 0, 0, 0}
};
Merci d'avance pour vos réponses !
PS : pour ceux qui ne l'auraient pas deviné, opts est de type opts_map et map de type std::map<char, Option*>.
Poste le Saturday 21 February 2004 19:50:49