命名空间'std'中没有名为'nullptr_t'的类型

 美女牙医--妙菡众 发布于 2023-01-07 12:26

有人正在编译我使用C++ 11标准的Qt程序,他们遇到了这个错误(Mac OS X/gcc).我知道我可以宣布它,但它不应该已经存在吗?

./collectable_smartptr.hpp:54:33: error: no type named 'nullptr_t' in namespace 'std'
void operator=(std::nullptr_t &null)

这段代码在Windows和Linux上运行得很好,我在Mac上看到它.

Mac是i386-apple-darwin11.3.0,编译器是:

$ g++ --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
Target: x86_64-apple-darwin13.2.0
Thread model: posix

g ++选项(一些)是 -c -pipe -std=c++11 -O2 -arch x86_64 -Xarch_x86_64 -mmacosx-version-min=10.5 -Wall -W -DQT_USE_QSTRINGBUILDER -DQT_NO_DEBUG -DQT_WEBKIT_LIB -DQT_XML_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED

这是正常的吗?或者在Mac上需要做些什么才能使C++ 11工作?

1 个回答
  • 明确包含内容总是更好,所以,我会将其添加到代码中:

    #include <cstddef>
    

    如果这不起作用,则意味着您的系统存在根本问题,即:

    您没有使用最近的标准库实现(例如,尝试libc ++).

    您没有启用C++ 11和编译.

    作为一种快速而讨厌的解决方法,您当然可以自己进行typedef,如下所示:

    namespace std {
        typedef decltype(nullptr) nullptr_t;
    }
    

    或者没有std,但这真的应该是最后的手段,通常这意味着你做错了什么.

    2023-01-07 12:30 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有