Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在Pascal中初始化对象数组?_Arrays_Object_Queue_Pascal_Freepascal - Fatal编程技术网

Arrays 如何在Pascal中初始化对象数组?

Arrays 如何在Pascal中初始化对象数组?,arrays,object,queue,pascal,freepascal,Arrays,Object,Queue,Pascal,Freepascal,我定义了一个队列 Queue = object head, tail : pNode; constructor init; procedure insert(what : data); ... end; 在哪里 constructor Queue.init; begin new(head); tail := head; head^.next := nil; end; 然后我得到了队列的p:array[0..9]并希望初始化其中的队列,如i:=0

我定义了一个队列

Queue = object
    head, tail : pNode;
    constructor init;
    procedure insert(what : data);
    ...
end;
在哪里

constructor Queue.init;
  begin
  new(head);
  tail := head;
  head^.next := nil;
end;
然后我得到了队列的
p:array[0..9]
并希望初始化其中的队列,如i:=0到9 do P[i].init的
,但编译器抱怨P似乎没有初始化


那么,如何正确初始化对象数组呢?谢谢。

Init只调用构造函数。初始化是通过使用构造函数作为第二个参数调用new来完成的,请重试

for i:=0 to 9 do 
   new(P[i], Queue.Init));

显示声明
P
的代码和初始化代码。另外,永远不要更改构造函数的名称:始终使用
Create
。对于i:=0到9的do P[i]:=Queue.init,您需要将其称为
。请不要说“我有东西,我这样使用它”。发布编译器不满意的实际代码,以便我们可以帮助您。我们无法对您没有实际提供的代码进行故障排除,而即时编写的代码可能会隐藏实际问题。@mirgee
Free Pascal
是一套工具,主要是免费的跨平台编译器
Pascal语言
Niklaus Wirth
设计,后来由
Borland公司
扩展为
Object Pascal语言
flavor,以
Delphi
的形式销售。在它的时代,它非常流行,存在数百万行代码(我也写了一些)。
object关键字
在~1995年成为不推荐使用的功能。这个和
指针
记录
仍在发挥作用。但对于链接列表等教程,谷歌搜索
类关键字
Delphi
——要容易得多。你读什么“书”以及为什么?@mirgee如果你想从书中找出帕斯卡的例子(上个世纪写的第一版)然后1用
类替换
记录
2用
类替换
对象
3用
类替换
^。
4删除T和^T之间的差异1件事不需要两个名称5添加
公共
可见性修改器6用
免费
6名称替换
删除x
构造函数和析构函数
Create
Destroy
7在查找代码帮助时,然后搜索
Delphi
(语言)您将找到许多示例和答案。抛出3个错误:1)预期指针类型,但得到队列2。)预期非法表达式3。),但标识符init foundAargh,是正确的。通常使用指针,而不是静态对象。我想这警告已经过时了。您可以将对象填充为零。“警告已过时”是什么意思?如何填充对象?无论如何,我认为你的答案是正确的;