This question already has answers here:
Why do linked lists use pointers instead of storing nodes inside of nodes
(10个回答)
4年前关闭。
我对C ++还是很陌生,因为我对学习这种语言非常感兴趣,所以我试图将旧的Java项目转换为C ++。其中之一是基本的LinkedList,它应该存储“ ListElement”类的对象,其中包含“ Table”类的对象(基本上是餐馆的表列表)。
到目前为止,我可以翻译Table类而没有任何错误。
一切都按规则进行(头文件“ Table.h”中的类声明,源代码文件“ Table.cpp”中的实现)。在main.cpp中,我可以创建Table的实例,处理数据并打印出来。因此对我而言,Table类似乎可以像在Java中那样工作。
当涉及到ListElement类时,我在特定时候遇到了麻烦,而且我不知道我在C ++中做错了什么,因为在Java中,它工作得很好。基本上,这似乎是一个声明问题,我不能坦白地指出。所以这就是为什么我需要您的帮助。
这是我的ListElement.h的样子:
问题部分似乎是代码的这一部分:
(我在Mac OSX上使用XCode)
我的IDE给我以下错误:“字段的类型'ListElement'不完整”
我的ListElement.cpp看起来像这样:
在我的ListElement.cpp中,我的IDE中出现以下错误:“声明中的异常说明与先前的声明不匹配”
在Java中,我具有这样的ListElement(基本上只是代码的重要部分):
而且效果很好。
我错过了什么还是我做错了什么?
(10个回答)
4年前关闭。
我对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给我以下错误:“字段的类型'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私有ListElement中;仅创建对ListElement类型的另一个对象的引用。
但是在C ++中,情况并非如此。在ListElement类型的每个对象中,都会创建另一个ListElement类型的对象,从而创建无限递归。
您可以使用创建指向另一个ListElement的指针
ListElement * next;
09-04 17:25