首页 > 解决方案 > 在什么情况下,我应该在结构中包含用于管理泛型类型的函数?

问题描述

我对此感到很困惑。让我举一个例子,说明我最初的猜测是错误的。

我有一个名为 的通用数据类型Amazon,它存储用户(仅通过他们的 ID 标识)想要销售的不同产品的列表。每个列表都包含产品的 ID(唯一)、产品本身(通用类型并且对于某个特定的所有产品都相同Amazon)和最低价格。

如果用户想要购买某些产品,他会在现有的先前出价列表中添加出价。即使用户出价高,也必须存储以前的出价。

如果不清楚,用户在创建系统时提供免费功能和产品类型的复制功能。

我实现该系统的想法是包含三个结构:

typedef void* product_type;
typedef product_type(*product_type_copy)(product_type);
typedef void(*product_type_free)(product_type);

struct amazon_t{
    Set listings;
    product_type_copy copy;
    product_type_free free;
};

struct product_info_t{
    List bids;
    int id;
    int min_price;
    product_type product;
};

struct bid_t{
    int bidder_id;
    int bid_sum;
};

现在,当我回来考试时,我看到扣分是因为结构product_info_t还应该包含产品类型的复制函数和自由函数,如下所示:

struct product_info_t{
    List bids;
    int id;
    int min_price;
    product_type product;
    product_type_copy copy;
    product_type_free free;
};

我不明白为什么这是必要的。有人可以解释一下为什么在这种情况下我应该将函数添加到两个结构中吗?

注:Amazon是一个指针的名字amazon_t

标签: cstruct

解决方案


推荐阅读