2017-06-13 3 views
0

Je compile mon C++ projet avec le drapeau std = C++ 11 parce que je l'utilise remplacement dans une de mes classes, je suis tout de même obtenir cet avertissement:avertissement override Désactiver C++

warning: override controls (override/final) only available with - 
std=c++11 or -std=gnu++11 [enabled by default] 

Je voudrais savoir comment désactiver cet avertissement ou j'apprécierais si vous pouvez me dire ce que je fais mal.

+4

Vous devrait étudier pourquoi vous obtenez cet avertissement plutôt que de le désactiver. –

+3

Apparemment, vous n'utilisez pas '-std = C++ 11'. Cela se produit généralement lorsque vous utilisez un IDE où vous avez spécifié un indicateur de compilateur supplémentaire '-std = C++ 11' mais plus tard, il est remplacé par un autre" paramètre de sélection standard ". Vous pouvez probablement trouver l'argument de la ligne de commande pour invoquer le compilateur quelque part et vérifier. – nwp

+0

Etes-vous sûr que plusieurs options "-std =" ne sont pas spécifiées? À quoi ressemble la ligne de commande * effective * lors de l'exécution du compilateur? –

Répondre

1

Je ne pense pas que cet avertissement puisse être désactivé séparément. Au lieu de désactiver l'avertissement, je vous recommande de corriger le bogue. Votre code utilise une fonctionnalité de langage introduite dans C++ 11, mais vous compilez avec une norme antérieure activée. Vous avez deux options:

  • N'utilisez pas de nouvelles fonctionnalités standard ("nouveau", cela fait 6 ans ...) qui ne sont pas supportées par la norme (et le compilateur) que vous utilisez.
  • Compile avec la nouvelle version standard activée, en utilisant un compilateur qui prend en charge cette fonctionnalité standard.
0

Vous pouvez désactiver l'avertissement de avec pragma

#pragma warning(disable : _WARNING_NUMBER_) 

Où _WARNING_NUMBER_ est votre numéro de mise en garde

Cependant, vous devez toujours écouter votre compilateur et fixer l'avertissement au lieu de désactiver