java - C++链表ListElement类头文件麻烦

标签 java c++ linked-list singly-linked-list code-translation

<分区>

我是 C++ 的新手,因为我对学习这门语言非常感兴趣,所以我正在尝试将我的旧 Java 项目翻译成 C++。其中之一是基本的 LinkedList,它应该存储类“ListElement”的对象,其中包含类“Table”的对象(基本上是餐厅的表格列表)。 到目前为止,我可以毫无错误地翻译 Table 类。 一切都按规则进行(头文件“Table.h”中的类声明,源代码文件“Table.cpp”中的实现)。在 main.cpp 中,我可以创建一个 Table 实例,操作数据并将其打印出来。所以对我来说 Table 类似乎像在 Java 中一样工作。 当谈到 ListElement 类时,我在特定点上遇到了麻烦,我不知道我在 C++ 中做错了什么,因为在 Java 中它工作得很好。基本上这似乎是一个声明问题,老实说我无法弄清楚;所以这就是为什么我需要你的帮助。

这是我的 ListElement.h 的样子:

#ifndef ListElement_h
#define ListElement_h

#include "Table.h"

class ListElement{
private:
    Table value;
    ListElement next;
public:
    Table getValue();
    void setValue(Table value);
    ListElement getNext();
    void setNext(ListElement next);

    //Default-Constructor
    ListElement();
    //Custom-Constructor
    ListElement(Table value, ListElement next);
    //Destructor
    ~ListElement();
};

#endif /* ListElement_h */

有问题的部分似乎是这部分代码:

   ListElement next;

(我在 Mac OSX 上使用 XCode) 我的 IDE 给出以下错误:“Field has incomplete type 'ListElement'

我的 ListElement.cpp 看起来像这样:

#include "ListElement.h"
#include "Table.h"

ListElement::ListElement(Table value, ListElement next){

}
ListElement::ListElement(){

}
ListElement::~ListElement(){

}

在我的 ListElement.cpp 中,我的 IDE 出现以下错误:“声明中的异常规范与之前的声明不匹配

在 Java 中我有这样的 ListElement(基本上只有代码的重要部分):

public class ListElement {
    private Table value;
    private ListElement next;

而且效果很好。

我是不是遗漏了什么或者我做错了什么?

最佳答案

在java private ListElement next;仅创建对另一个 ListElement 类型对象的引用。

但在C++中,情况并非如此。在每个 ListElement 类型的对象中,都会创建另一个 ListElement 类型的对象,从而创建无限递归。

您可以使用以下方法创建指向另一个 ListElement 的指针

ListElement * next;

关于java - C++链表ListElement类头文件麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33484824/

相关文章:

java - 在同一服务的多个实例上操作数据库中的数据

c++ - [expr.unary.op]/9 似乎暗示 `operator !()` 不能应用于下面的类型 A。但编译器不同意这一点

无法打印链接列表

c - 数据类型* <变量名> 和。数据类型 *<变量名>

java - 方法不起作用时的 Mockito

java - 从另一个 JAR 文件中解压/提取资源

java - 如何克服 JpCap 问题?

C++ 函数指针

c++ - QCompare 测试失败 : wrong number of arguments produced by the [] operator on an unorded_map

C - 链表段错误