0

我刚刚从 Ubuntu 软件中心在 Ubuntu RR 上安装了 QtCreator(使用 MinGW)。我有一些使用 C++11 功能的代码,特别是:

强类型枚举 - 即:枚举类 Color {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 类型?

4

1 回答 1

2

那么正确的包含是

#include <memory>

你应该添加

QMAKE_CXXFLAGS += -std=c++11

在你的.pro文件中使 c++11 工作。

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

于 2013-06-11T21:43:10.543 回答