gpt4 book ai didi

delphi - 如何在 Delphi 中声明数组对象字段?

转载 作者:行者123 更新时间:2023-12-03 18:26:19 24 4
gpt4 key购买 nike

我尝试这样做,但在构造函数中出现错误。

E2029 'OF' expected but '[' found

Dish = class
public
Dish_name: string;
Dish_id: integer;
Dish_number: integer;
Dish_units: string;
Dish_price: integer;
Dish_prime_cost: integer;
Dish_ingredients_id: array[1..100] of Ingredients;

constructor Create( NewDish_name: string;
NewDish_id: integer; NewDish_number: integer;
NewDish_units: string; NewDish_price: integer;
NewDish_prime_cost: integer;
NewDish_ingredients_id:array[1..100] of Ingredients);

destructor Destroy;
end;

成分一流。

最佳答案

您不能将静态数组内联声明为参数。您需要声明一个类型:

type
TIngredientsArray = array[1..100] of Ingredients;

然后将该类型用于您的字段和参数。

但是,静态大小的数组可能不是最佳选择。如果您需要超过 100 种成分怎么办?如果您只需要 1,但被迫超过 100 怎么办?按照您的代码,菜肴类如何知道实际提供了多少成分?

考虑改用动态数组。

您还应该考虑这些成分对象的生命周期和所有权。您将对象传递给 dish 类。它是否拥有所有权?也就是说,谁负责销毁所有的配料对象?如果您可以为配料使用值类型,即 record,那么您可能会发现这可以简化生命周期管理。

在 Delphi 中对数组使用从零开始的索引也是惯用的。动态数组是从零开始的。标准集合类是从零开始的。如果您开始使用基于 one 的数组,那么经验表明您将来会存储困惑。

关于delphi - 如何在 Delphi 中声明数组对象字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31393135/

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