URL: https://linuxfr.org/forums/programmation-c/posts/aide-sur-du-code-c-dans-qtopia Title: Aide sur du code C++ dans Qtopia Authors: Adrien Dorsaz Date: 2014年02月26日T14:43:03+01:00 License: CC By-SA Tags: Score: 1 Hello! Je suis en train d'essayer de débugger l'application QtopiaMail de QtMoko qui n'arrive pas à lire les mails qui contiennent plusieurs parties dans leur message (une partie html et une partie txt par exemple). Je m'y connais peu en C++, mais j'ai réussi à déterminer depuis quelle fonction sont crées les messages, la voici : ```c++ /*! Returns the QMailMessage defined by a QMailMessageId \a id from the message store. */ QMailMessage QMailStore::message(const QMailMessageId& id) const { // Resolve from overloaded member functions: AttemptResult (QMailStore::*func)(const QMailMessageId&, QMailMessage*, MailStoreReadLock&) const = &QMailStore::attemptMessage; QMailMessage msg; repeatedly(bind(func, this, cref(id), &msg), "message(id)"); return msg; } ``` On a donc QMailMessage la classe qui définit un message, QMailStore la classe qui permet d'enregistrer un message reçu et de le restaurer (justement avec cette fonction). AttemptResult est un enum privé de QMailStore : ```c++ enum AttemptResult { Success = 0, Failure, DatabaseFailure }; ``` repeatedly est une méthode privée de QMailStore définie ainsi, qui tente plusieurs fois de se connecter à la base de donnée : ```c++ bool repeatedly(FunctionType func, const QString &description) const; ``` Je voulais vous demander de l'aide pour comprendre ce que fait la ligne qui commence par AttemptResult dans le premier bout de code cité. Est-ce que c'est bien la définition locale d'un pointeur de fonction qui prends trois arguments et qui pointe sur l'adresse de la fonction attemptMessage ? Si c'est bien ça, je me demande également comment le compilateur c++ sait de quelle méthode attemptMessage il faut retrouver l'adresse, puisque cette méthode est définie de deux manière avec une première fois 3 arguments et la seconde fois 4 arguments. Est-ce qu'il le sait grâce à la définition du pointeur de fonction qui utilise justement 3 arguments ? Ça serait magique :D Merci pour votre aide !

AltStyle によって変換されたページ (->オリジナル) /