You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Qt 5.15的项目中nullptr被错误解析为int的问题求助

针对ArchLinux下Qt 5.15.8编译时nullptr被解析为int的解决方案

1. 强制启用C++11及以上编译标准

nullptr是C++11引入的特性,部分编译器默认标准过低会将其错误解析为int:

  • 若为CMake项目,在CMakeLists.txt中添加:
    set(CMAKE_CXX_STANDARD 11)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    
  • 若为qmake项目,在.pro文件中添加:
    CONFIG += c++11
    

2. 修复qhashfunctions.h中的类型转换问题

修改Qt头文件中qHash函数的实现,显式约束nullptr的类型:

Q_DECL_CONST_FUNCTION inline uint qHash(std::nullptr_t, uint seed = 0) Q_DECL_NOTHROW
{
    // 显式转换为std::nullptr_t后再强转
    return qHash(reinterpret_cast<quintptr>(static_cast<std::nullptr_t>(nullptr)), seed);
}

或者直接使用0替代nullptr(逻辑等价):

Q_DECL_CONST_FUNCTION inline uint qHash(std::nullptr_t, uint seed = 0) Q_DECL_NOTHROW
{
    return qHash(static_cast<quintptr>(0), seed);
}

3. 修正std_thread.h中的变量类型声明

将auto __depend = nullptr;修改为显式函数指针类型声明:

void (*__depend)() = nullptr;

避免编译器错误推导为int类型。

4. 排查编译器禁用nullptr的异常参数

检查Qt Creator的编译命令(项目 -> 构建步骤 -> 编译器输出),确保没有添加-fno-nullptr(GCC)或-fno-cxx-nullptr(Clang)这类禁用nullptr特性的参数,如有则删除。


内容的提问来源于stack exchange,提问作者Viktoriia Pashchenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 22:55:33