c++ - 创建面向对象的链表时出现编译问题(编译器错误 C2664)

标签 c++ compiler-errors linked-list

我正在编写一个类,嵌入一个可逆链表,但我遇到了空指针类型的问题:

链表定义:

struct LL {
  int information;
  LL* pre;
  LL* succ;
  };

类定义(部分):

class T_LL {
  private : 
    LL  *lList;
    int index;
    int size;
  public :
    T_LL() {
      lList = new(LL);
      lList->pre = nullptr;
      lList->succ = nullptr;
      size = 0;
      index = -1;
    }
  ...
    LL get_successor(){
      if (index+1 <= size) {
        return *lList->succ;
      } else { return nullptr; }
    }

当我尝试编译它时,编译器提示 get_successor() 方法,说:

error C2664: 'LL::LL(const LL &)' : cannot convert argument 1 from 'nullptr' to 'const LL &'

我以为空指针是一个通用的指针,可以用于任何目的?我做错了什么(为什么构造函数中没有编译错误)?

提前致谢

最佳答案

get_successor() 返回类型为 LL 的值。它不能返回一个指针。您可能想要更改它:

LL* get_successor(){
  if (index+1 <= size) {
    return lList->succ;
  } else { return nullptr; }
}

关于c++ - 创建面向对象的链表时出现编译问题(编译器错误 C2664),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37022569/

相关文章:

java - Gradle 构建失败,出现异常 : java. exe' 以非零退出值 2 完成

compiler-errors - 转让所有权(Genie/Vala)

c - 链表创建函数任意添加节点

c++ - 如何确定要为boost::stacktrace::safe_dump分配多少空间?

c++ - CMake无法从库中找到 header

java - 如何解决 “var cannot be resolved to a type”错误?

c++ - 用智能指针实现一个简单的单向链表

c++ - 尝试使用 C++ 将着色器应用于 OpenGL 中的顶点数组的问题

c++ - 通过模板传递函数时推断的返回类型

Java 执行 For 循环但也使用迭代器进行链表 ( "For, While") 循环?