<分区>
我是 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;
而且效果很好。
我是不是遗漏了什么或者我做错了什么?