很奇怪的问题,有人发现过吗?

yushang0824 2003-10-22 12:05:46
PYuNode = ^TYuNode;

TYuNode = class(TObject)
private
FLeft: PYuNode;
FRight: PYuNode;
Public
function AddChild(Node: PYuNode): Boolean;
End;

function TYuNode.AddChild(Node: PYuNode): Boolean;
var
LastChild: PYuNode;
begin
Node^.FLeft := @Self; // 在此(self = N1)吗?

Result := True;
end;

主程序如下:
var
N1,N2: TYuNode;

N1.AddChlid(N2);

发现如下问题:@N1 = $12F528 而 AddChlid内 @Self = $12F500
...全文
24 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yushang0824 2003-10-22
  • 打赏
  • 举报
回复
我想做一个二叉树,必须有PYuNode类型因为不可以这样定义

TYuNode = Class(TObject)
public
Data: Integer;
Left: TYuNode;
Right: TYuNode;
end;
只能:
PYuNode = ^TYuNode;
TYuNode = Class(TObject)
public
Data: Integer;
Left: PYuNode;
Right: PYuNode;
end;
CloneCenter 2003-10-22
  • 打赏
  • 举报
回复
定义一个 YuNode 类型的变量,然后指向过去,不行吗?
为什么要直接使用 @ 运算符呢?这应该不是一个好方法。
yushang0824 2003-10-22
  • 打赏
  • 举报
回复
如何实现
  PYuNode指向YuNode?
yushang0824 2003-10-22
  • 打赏
  • 举报
回复
我的想法,是不是N1,Self可以看两个指针?

指向的对象是相同的,而N1,Self两个指针变量本身地址不同?一个是$12F528 另一个是 $12F500

我希望Node^.FLeft 和 Self指向的对象相同如何实现?
FrameSniper 2003-10-22
  • 打赏
  • 举报
回复
他们的回答都不对!居然都有分!哭....
FrameSniper 2003-10-22
  • 打赏
  • 举报
回复
呵呵,这个问题和我刚才回答的你的那个问题是一个道理,你自己再看看吧!
dickeybird888 2003-10-22
  • 打赏
  • 举报
回复
他们为两个不同的指针!
dickeybird888 2003-10-22
  • 打赏
  • 举报
回复
应该是型参与实参的问题造成的!
(·¥·)
yushang0824 2003-10-22
  • 打赏
  • 举报
回复
如果Node是一个Class

如何实现Node.GetParent?
leapmars 2003-10-22
  • 打赏
  • 举报
回复
PNode = ^TNode;
TNode = record
Data: Integer;
Left: PNode;
Right: PNode;
end;

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧