Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/08/2013, à 07:04

seub

[Résolu] Qt 5 et C++11

Bonjour,

J'ai déjà posé cette question (en anglais) sur Qt Project forums (ici) et stackoverflow () mais comme je ne suis pas plus avancé pour le moment, je me permets de demander ici, j'espère qu'on ne m'en tiendra pas rigueur.

Je n'arrive pas à faire marcher C++11 avec Qt. Normalement (si je ne m'abuse) il suffit de rajouter la ligne

CONFIG += c++11

au fichier .pro du projet pour pouvoir écrire du C++11.

Le problème c'est que quand je rajoute cette ligne, j'ai une flopée d'erreurs à la compilation, venant semble-t-il d'un fichier qobjectdefs_impl.h. Ci-après une capture d'écran pour que vous voyiez à quoi ça ressemble :

capture

Dans un premier temps j'ai laissé tomber l'idée de faire du C++11, puis j'y suis revenu. J'ai vaguement essayé de comprendre ce qui pouvait coincer, mais ça me dépasse. Pour installer tout l'appareil Qt sur ma machine (un laptop avec Ubuntu 13.04 64 bits), j'ai simplement fait un

sudo apt-get install qtcreator

qui m'a installé tout ce qu'il faut. À ce stade j'avais donc Qt 5.0.1 et gcc 4.7.3.

Du coup je me suis dit que le problème venait peut-être de là, et donc là je viens d'installer gcc 4.8.1 (en suivant ce lien) et Qt 5.1.2 en le compilant à partir des sources git (en suivant ces instructions). Fort de cette nouvelle configuration, je m'attendais à ce que tout se mette à marcher, mais j'ai toujours mes erreurs !

Si quelqu'un sait comment résoudre ce problème, il fera un heureux ! Merci d'avance pour vos réponses.

Dernière modification par seub (Le 15/08/2013, à 08:08)

Hors ligne

#2 Le 15/08/2013, à 08:07

seub

Re : [Résolu] Qt 5 et C++11

Youpi, quelqu'un a trouvé la solution sur QtProject.

En bref, j'avais fait une déclaration

#define I std::complex<double>(0.0, 1.0)

qui créait un conflit (pour peu que je passe en C++11). En plus détaillé ici.

Désolé pour la "pollution".

Hors ligne

#3 Le 16/08/2013, à 18:36

Luc Hermitte

Re : [Résolu] Qt 5 et C++11

Une macro ? Pour définir une constante ? Mais quelle idée !
Pourquoi n'utilises-tu pas const ? Il est fait pour ça.

Hors ligne

#4 Le 18/08/2013, à 17:58

seub

Re : [Résolu] Qt 5 et C++11

Je suis loin d'être un "pro" du C++, mais il ne me paraît pas absurde d'utiliser une macro pour définir une constante mathématique (car je me dis que ce n'est pas une variable constante, c'est une constante "absolue"). D'ailleurs, dans la librairie math.h, les constantes sont définies ainsi, me semble-t-il (par exemple #define M_E         2.71828182845904523536028747135266250   /* e */)

Mais tu as peut-être raison quand même, je vais poser la question sur stackoverflow pour m'assurer de la meilleure "pratique" dans mon cas particulier.

Hors ligne

#5 Le 19/08/2013, à 10:25

Luc Hermitte

Re : [Résolu] Qt 5 et C++11

const sert à deux choses.
A définir des variables immuables quand elles sont le résultat d'une expression qui ne peut pas être évaluée à la compilation (attention,constexpr en C++11 permet de définir des expressions évaluables à la compilation toujours plus complexes)
Et à définir des constantes de compilations.

En général, les cours de C++ disent de virer toutes les macros qui peuvent l'être quand on peut à la place soit utiliser const, soit des fonctions inlines, éventuellement templates.

Quant à math.h, c'est du C. Pas du C++. Et je doute au passage que M_E soit standard.

Dernière modification par Luc Hermitte (Le 19/08/2013, à 10:26)

Hors ligne

#6 Le 19/08/2013, à 11:29

seub

Re : [Résolu] Qt 5 et C++11

Je vois. Et bien, merci pour ces éclairages !

Hors ligne