问题: QtCreator似乎没有使用C++11标准编译,尽管Config += c++11是在项目.pro文件中设置的。
背景:作用域枚举的全局定义位于单独的头文件global_definitions.h中:
// ...
enum class dr_items { CROSSHAIR,
GRID,
LABELS,
DATA,
AMOUNT // count element
};此文件为每个作用域枚举生成警告,但没有错误:
/path/global_definitions.h:7: warning: scoped enums only available with -std=c++11 or -std=gnu++11
enum class dr_items { CROSSHAIR,
^该错误发生在文件oscscene.cpp中第一次使用作用域枚举时:
#include "oscscene.h"
#include "global_definitions.h"
// ...
for(int i=0;i++;i<dr_items::AMOUNT){
// ...带错误输出
/path/oscscene.cpp:9: error: 'dr_items' is not a class or namespace
for(int i=0;i++;i<dr_items::AMOUNT){
^Projects .pro文件:
QT += core gui
CONFIG += c++11
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets版本:
发布于 2016-04-07 08:46:19
由于qmake似乎使用QT4.6而不是支持Qt5 (支持Config += c++11 ),所以解决方案是添加
QMAKE_CXXFLAGS += -std=c++11在项目.pro文件中,正如BoBTFish注释的那样。这解决了问题。
https://stackoverflow.com/questions/36470718
复制相似问题