2013-06-11 75 views
0

我刚刚在Ubuntu软件中心的Ubuntu RR上安装了QtCreator(使用MinGW)。我有一个使用特征从C++ 11的一些代码,具体有:使用MinGW的QtCreator找不到std :: shared_pointer

强类型枚举 - 即:枚举类颜色{红,绿,蓝}

的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类型?

回答

2

以及正确的包容是

#include <memory> 

,你都应该添加

QMAKE_CXXFLAGS += -std=c++11 

.pro文件,使C++ 11的工作。

编辑:使用比gcc 4.7更早的编译器,您应该使用该标志的c++0x值。

+0

包括我已经有 - 它在其他IDE中构建得很好,而QtCreator的问题与头部样式不同 - 我使用** #include **。我只需要添加QMAKE_CXXFLAGS + = -std = c + + 11到.pro文件,它的内置和运行良好。 – Vector