【问题标题】:error: ‘nullptr’ was not declared in this scope错误:未在此范围内声明“nullptr”
【发布时间】:2020-02-13 03:20:12
【问题描述】:

我正在尝试在我大学的 ssh 服务器上编译一个项目,但出现错误:

Node.h:12: error: ‘nullptr’ was not declared in this scope

来自我的 Node.h 类的代码块:

template <typename T> 

struct Node{
    T data; 
    Node *leftChild; 
    Node *rightChild; 

    Node(const T & theData = nullptr, Node *left = nullptr, Node *right = nullptr);
    Node(T && theElement = nullptr, Node *left = nullptr, Node *right = nullptr);

    T getData(); 
}; 

服务器在GCC 版本4.4.7 上运行,我正在使用以下命令进行编译:

g++ -std=c++0x

^ 我在这个课程的所有项目中都使用了这个命令,这是我第一次遇到这个问题。我可以尝试什么来解决这个问题?

【问题讨论】:

  • 你的编译器是旧的
  • 我知道,我不知道为什么我的学校这么久没有更新它:(
  • nullptr在C++11中诞生,见en.cppreference.com/w/cpp/language/nullptr
  • @hmp54 您的编译器似乎不支持文字 nullptr。而是使用 NULL。
  • 使用const T &amp; theData = nullptr,您的元素只能是指针(或nullptr_t)。我怀疑这就是你想要的——你可能想要const T &amp; theData = T()

标签: c++ g++


【解决方案1】:

根据https://gcc.gnu.org/projects/cxx-status.html#cxx11,空指针常量是GCC 4.6+的一部分。您必须找到使用 nullptr 常量的方法或更新 GCC 版本(推荐)。

【讨论】:

  • 我无法更新 GCC 版本,因为我正在使用我大学的服务器。 nullptr 和 null 的替代方法是什么?它们都导致相同的错误。
  • @hmp54 你试过null 还是NULL?您也可以尝试= 0,因为(我相信)这是NULL 的基本逻辑。见这里:cplusplus.com/reference/cstring/NULL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-10
相关资源
最近更新 更多