C ++结构是否可以接受另一个结构?

时间:2013-11-23 19:19:20

标签: c++

例如,我正在建立一个链表结构,我想知道是否可以这样做:

struct linked_list {
     <data structure defined by caller>
     linked_list *next, *previous;
};

"<data structure defined by caller>"区域,我想知道如何实时制作另一个结构并将其放在这个区域?

我不想这样做:

struct A {
...
};

我不想在我的链接列表中放置一个A,我想知道是否可以在我的调用者中创建独特的结构,然后将这些结构放在我的link_list文件中?例如,使用一个linked_list类来生成数百种不同的数据类型的结构,这些结构都是从我的链表继承的?

编辑:为了更清楚,我想要这样的事情:

struct Fruit {
    int type;
    struct {
        int size;
        int circumference;
    };
};

除了我希望能够在创建时动态更改内部结构内的所有变量。这可能吗?

2 个答案:

答案 0 :(得分:4)

您正在寻找模板。

template <typename T>
struct linked_list {
    T value;
    linked_list *next, *previous;
};

像这样使用:

struct other_struct {
    int foo;
};

linked_list<other_struct> ll;

答案 1 :(得分:0)

问题不明确 - 您是否要混合列表中不同类型的对象。如果是,这是一个经典的多态 - 你只需要保持一个指向基础结构的指针,而不是结构数据本身。如果不是H2CO3对模板的回答是一种方法。

编辑:实际上,您可能正在寻找工会。这将允许您使用相同的物理内存来表示不同的逻辑信息。您可以在此处找到更多相关信息:http://www.cplusplus.com/doc/tutorial/other_data_types/