(请问DELPHI支持对象指针吗?这个程序为什么不能得到正确的结果呢?)快疯了!
请问delphi支持对象指针吗?这个程序为什么不能得到正确的结果呢?快疯了
// #### car.pas ####
unit car;
interface
Type
Pcar=^Tcar;//这里可以这样写吗?
TCar=class(Tobject)
constructor create(strNo:integer;t:integer;p:Pcar);
destructor destroy();
private
curStr:integer;
timeleft:integer;
next:Pcar;//含有一个指向该类对象的指针,这里可以吗?
public
procedure setLeftTime(time:integer=0);
function getLeftTime():integer;
end;
implementation
{ TCar }
constructor TCar.create(strNo:integer; t: integer;p:Pcar);
begin
inherited create;
curStr:=strNo;
timeleft:=0;
next:=nil;
end;
destructor TCar.destroy;
begin
inherited destroy;
end;
procedure TCar.setLeftTime(time: integer);
begin
timeLeft:=time;
end;;
function TCar.getLeftTime(): integer;
begin
getLeftTime:=timeleft;
end;
//############### Unit car identify ended ######
//############ program cs ########
program cs;
{$APPTYPE CONSOLE}
uses
SysUtils,
car in 'car.pas';
var
ch:char;
head,tail,Pmycar:Pcar;
begin
head:=nil;
tail:=nil;
new(Pmycar);
pmycar^.setLeftTime(10); //这句有问题吗?
head:=Pmycar; //这句呢?
tail:=pmycar;
writeln(head^.getLeftTime());
read(ch);//让控制台程序停住,不立即关闭。
end.
//我期望的结果是输出10,我的本意是想建立一个Tcar类对象的链表,没有写真正的链表 立,因为头指针都不对。
//还有一个问题,是不是我没有调用Tcar.create除了问题呢?
//如果这样写到是可以得到期望值
// var mycar:Tcar;
// begin
// mycar:=Tcar.create(1,0,nil);
// pmycar:=@mycar;
// pmycar^.setLeftTime(10);
// writeln(pmycar^.getLeftTime());
// end.
//但是我的链表可能长度为100呢,不能都指向@mycar地址阿,应该还是用new(pmycar)吧,为什么达不到记录指针那种效果?
//怎样动态创建对象的实例(instance),而不是创建多个对象,有这样的例子吗,拜托告诉我网址或者解决办法,谢谢。