【问题标题】:QtCreator using MinGW cannot find std::shared_pointer使用 MinGW 的 Qt Creator 找不到 std::shared_ptr
【发布时间】:2013-06-07 21:41:37
【问题描述】:

我刚刚从 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 类型?

【问题讨论】:

    标签: c++ c++11 qt-creator shared-ptr


    【解决方案1】:

    正确的包含是

    #include <memory>
    

    你应该添加

    QMAKE_CXXFLAGS += -std=c++11
    

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

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

    【讨论】:

    • 我已经拥有的包含 - 它确实在其他 IDE 中构建良好,QtCreator 的问题不在于标题样式 - 我正在使用 #include 。我只需要将 QMAKE_CXXFLAGS += -std=c++11 添加到 .pro 文件中,它就可以构建并运行良好。
    猜你喜欢
    • 2012-03-03
    • 1970-01-01
    • 2016-11-15
    • 2016-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多