例如,我正在建立一个链表结构,我想知道是否可以这样做:
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;
};
};
除了我希望能够在创建时动态更改内部结构内的所有变量。这可能吗?
答案 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/