我刚从Ubuntu软件中心在Ubuntu RR上安装了QtCreator(使用MinGW)。我有一些使用C ++ 11功能的代码,具体来说:
强类型枚举 - 即:枚举类颜色{RED,GREEN,BLUE}
std :: shared_ptr类型,包含在memory.h中。
此代码根本不使用Qt。它是一个简单的控制台应用程序,它使用CodeBlocks / MinGW和CodeLite / MinGW编译并运行良好,并启用了C ++ 11编译器指令。
当我尝试使用QtCreator中的相同代码(QtCreator中的简单C ++控制台项目)构建项目时,我收到警告,强类型枚举需要C ++ 11,默认情况下启用。并且编译器根本无法识别shared_ptr类型 - 无法编译。
有什么问题?我需要设置另一个编译器选项吗?错误消息似乎表明默认情况下启用了C ++ 11。别的什么?我是QtCreator的新手 - 甚至无法找到设置编译器标志的位置并删除有关枚举的警告。那些设置在哪里?
最重要的是:我需要做什么才能使编译器识别出std :: shared_ptr类型?
答案 0 :(得分:2)
正确的包含是
#include <memory>
你应该添加
QMAKE_CXXFLAGS += -std=c++11
在你的.pro
文件中使c ++ 11工作。
编辑:对于早于gcc 4.7
的编译器,您应该使用该标志的c++0x
值。