我需要在类实例内部获取指向该实例的指针。我不能直接使用"Self",因为我需要将指针存储以备将来使用。我尝试了下面的代码:
type
TTest = class(TObject)
public
class function getClassPointer: Pointer;
function getSelfPointer: Pointer;
end;
class function TTest.getClassPointer: Pointer;
begin
Result := Pointer(Self);
end;
function TTest.getSelfPointer: Pointer;
begin
Result := Pointer(Self);
end;
两个结果都是错误的 - 这段代码:
test := TTest.Create;
Writeln('Actual object address: ', IntToHex(Integer(@test), 8));
Writeln('Class "Self" value: ', IntToHex(Integer(test.getClassPointer()), 8));
Writeln('Object "Self" value: ', IntToHex(Integer(test.getSelfPointer()), 8));
返回:
Actual object address: 00416E6C
Class "Self" value: 0040E55C
Object "Self" value: 01EE0D10
请帮我理解,“Self”值是什么?“Self”是指向该类实例的指针吗?如何使用此指针在对象外部进行将来的使用?如何从该值获取适当的指针?
getClassPointer
与内置的ClassType
方法相同。 - Rob Kennedy