我对C非常陌生,因为我对学习这种语言非常感兴趣,所以我正在尝试将我的旧Java项目翻译成C。其中一个是基本LinkedList,它应该存储“ListElement”类的对象,其中包含“Table”类的对象(基本上是餐厅的表列表)。到目前为止,我可以翻译Table类而没有任何错误。一切按规则进行(头文件“Table.h”中的类声明,源代码文件“Table.cpp”中的实现)。基本上。cpp我可以创建表的实例,操作数据并将其打印出来。所以对我来说,Table类似乎和Java中的一样工作。当涉及到ListElement类时,我在特定的点上遇到了问题,我不知道我在C中做错了什么,因为在Java中它就是这样工作的。基本上,这似乎是一个申报问题,我不能诚实地弄清楚;这就是为什么我需要你的帮助。
这是我的清单。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;
(我在MacOSX上使用XCode)我的IDE给了我以下错误:“字段的类型'ListElement'不完整”
我的清单。cpp如下所示:
#include "ListElement.h"
#include "Table.h"
ListElement::ListElement(Table value, ListElement next){
}
ListElement::ListElement(){
}
ListElement::~ListElement(){
}
在我的记忆中。cpp我在IDE中遇到以下错误:“声明中的异常规范与以前的声明不匹配”
在Java中,我有这样的ListElement(基本上只是代码的重要部分):
public class ListElement {
private Table value;
private ListElement next;
它工作得很好。
我是错过了什么还是做错了什么?
在Java中,每个非原语变量实际上都是一个指针。因此,它们可以是null
。
在C语言中,当您编写ListElement Next;
时,这不是指针。不能是nullptr
。因此,您试图定义一个无限递归的数据结构,因为ListElement
包含一个ListElement
,其中包含一个ListElement
,其中包含一个ListElement
,其中包含一个...
这就是为什么需要next
作为可空/可选值,例如指针。它作为递归的基本情况。
有关相关问题,请参阅为什么链表使用指针而不是将节点存储在节点内部
在java私有列表元素下;仅创建对ListElement类型的另一个对象的引用。
但在C中,情况并非如此。在ListElement类型的每个对象中,都会创建另一个ListElement类型的对象,从而创建无限递归。
可以使用创建指向另一个ListElement的指针
ListElement * next;
主要内容:1. 事务失败,2. 系统崩溃,3.磁盘故障要找到问题发生的位置,我们将故障(失败)归纳为以下类别: 事务失败 系统崩溃 磁盘故障 1. 事务失败 当事务无法执行或者它到达无法继续执行的点时发生事务失败。 如果一些事务或进程受到损害,那么这称为事务失败。 事务失败的原因可能是 - 逻辑错误:如果由于某些代码错误或内部错误情况导致事务无法完成,则会发生逻辑错误。 语法错误:它发生在DBMS本身终止活动事务的位置,因为数据库系统无法执行它。 例
每当我试图运行我的GUI时,我在Eclipse WindowBuilder中都会得到奇怪的结果,左上角的区域出现了错误的文本(我真的不知道该怎么称呼这个问题)。我试着到处搜索,但显然没有其他人遇到这个问题。 图像问题:显示显示为Displa,“搜索”被置乱。 问题图片: 我试着创建一个新项目,试着重新安装eclipse,删除我所有的eclipse元文件,重新下载WindowBuilder,甚至从我
我想知道是否可以在Kafka制作程序中配置2个不同的Kafka集群。 目前我正试图让我的制片人 我正在使用Apache Kafka 2.8和Python 3.7的confluent_kafka==1.8.2包。 生产商代码下方: 当我杀死clusterB时,我得到了以下错误消息。
本页将试图表列一些常见问题,以及如何避免或修正他们。 使用 Google Mail 你需要使用以下配置: 使用 'smtp' 做为驱动。 SMTP 主机应该是 "ssl://smtp.gmail.com"。 SMTP 连接埠应该是 465 你应该设定 'newline' 为 "\r\n"。
Cadence是一个容错的有状态代码平台。cadence如何在各种故障情况下处理故障?
Webpack 的配置比较复杂,很容出现错误,下面是一些通常的故障处理手段。 一般情况下,webpack 如果出问题,会打印一些简单的错误信息,比如模块没有找到。我们还可以通过参数 --display-error-details 来打印错误详情。 $ webpack --display-error-details Hash: a40fbc6d852c51fceadb Version: webpa