2013-11-23 55 views
1

例如,我想提出一个链表结构,我想知道是否有可能做这样的事情:C++结构是否可以接受另一个结构?

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

"<data structure defined by caller>"区,我不知道我怎样才能使再拍结构现实时间并将其放置在这个区域?

我不想这样做:

struct A { 
... 
}; 

我不想把我的链接列表的里面,我想知道如果它可能使独特的结构,手机号码,然后让那些放置在我的link_list文件中的结构?例如,使用一个linked_list类来制作数百种不同的数据类型的结构,这些数据类型都是从我的链接列表继承而来的?

编辑:为了更清楚,我想是这样的:

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

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

+1

有没有想过标准容器('std :: vector'和friends)如何实现这种魔法? – Mat

+0

@Mat我不这么认为。 – 2013-11-23 19:22:01

+0

欢迎来到模板世界! –

回答

4

您正在寻找一个模板。

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

使用方法如下:

struct other_struct { 
    int foo; 
}; 

linked_list<other_struct> ll; 
0

它不是从问题明确的 - 你想在列表或不混合使用不同类型的对象。如果是,这是一个经典的多态 - 你只需要持有一个指向基本结构的指针,而不是结构数据本身。如果不是H2CO3模板的答案是一种方法。

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

相关问题