gpt4 book ai didi

delphi - 如何使用存储在 TList 中的对象的方法?

转载 作者:行者123 更新时间:2023-12-03 14:56:29 25 4
gpt4 key购买 nike

我的问题很简单。我有一个包含 CNotif 类对象的 TList(称为 queue),并希望对这些对象使用 is_alive 方法。

问题是,当我使用 queue.Items[0].is_alive() 时,我收到一条错误消息:错误:非法限定符

我也对在这个 TList 中实例化对象的方式感到困惑(以及编译器如何“知道”存储的对象属于这种类型......)

我现在做的是:queue.Add(CNotif.create(timer, title, text, bad))但我不认为应该这样做。

提前谢谢您!

最佳答案

The problem is, when I use queue.Items[0].is_alive(), I get an error message saying Error: Illegal qualifier.

这是因为编译器不知道 queue.items[0] 除了通用指针之外是什么(见下文)。

What I do now is: queue.Add(CNotif.create(timer, title, text, badge)) but I don't think it's supposed to be done that way.

这正是您需要的方式。 CNotif.Create 构造一个新对象,该对象源自 TObject。它编译得很好,因为您的 queue.Add 调用需要一个指针,而包含对象实例的 Delphi/FreePascal 变量实际上是一个指针。 (两种语言都隐藏了使用 MyObj^ 为我们取消引用的需要。)

要使用 queue.Items 中的某些内容,您需要告诉编译器除了通用指针(当然没有 >is_alive 方法)。您可以通过类型转换来做到这一点:

CNotif(queue.Items[0]).is_alive

注意:有一种更短的方法来使用TList.ItemsItems 被声明为 TList 的默认属性,因此您可以省略它:

queue[0] 

相同
queue.Items[0]

并且更容易输入。

关于delphi - 如何使用存储在 TList 中的对象的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10164033/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com