Bonjour,
Suite à la création d'un module gui qui compile et fonctionne, nous avons ajouté ce module à notre projet et l'erreur suivante est apparue.
Merci pour ta réponse! J'ai essayé mais cela n'a pas résolu mon erreur..
Essaie de créer une variable int var(1) et de mettre var à la place de 1.
Ce message d'erreur a déjà été discuté et résolu correctement avec plusieurs réponses dont celle de Vincent mais plusieurs étudiants avaient encore le problème vendredi passé.
Je ne fais ici que reformuler ce qui a déjà été écrit dans les réponses précédentes.
1) notre fonction main doit travailler avec argc et argv pour récupérer de l'information pour piloter notre programme.
2) si nous voulons exploiter GTKmm il faut à un moment ou un autre appeler la méthode create qui demande qu'on lui fournisse aussi la valeur des paramètres argc et argv.
3) Or, pour ce projet, nous ne voulons pas que GTKmm commence à interpréter les chaines de caractères qui suivent argv[0] ( argv[0] contient le nom de l'exécutable ; cette chaine est utilisée pour le titre de la fenêtre). En effet la documentation de GTKmm (lien fourni par Vincent) nous dit que :
Normally, GtkApplication will assume that arguments passed on the
command line are files to be opened. If no arguments are passed, then
it assumes that an application is being launched to show its main window
or an empty document. In the case that files were given, you will
receive these files (in the form of GFile) from the open signal.
<=> Si on transmet la valeur brute de argc à create et qu'elle est plus grande que 1, GTKmm
va chercher à ouvrir un fichier et nous n'avons pas vu comment traiter
ce mode de fonctionnement, d'où le message d'erreur.
4) la solution déjà indiquée plusieurs fois est de transmettre la valeur 1 à la méthode create à la place de argc. Cela sert à "tromper" GTKmm pour que cette bibliothêque utilise seulement argv[0] et pas plus.
Bonjour,
À la place de "tromper" GTKmm, il suffit aussi juste d'écrire:
"auto app = Gtk::Application::create();"
(donc de ne passer aucun paramètres à "create". Dans notre cas cela suffit.)
Bonne fin de weekend! ;)