2013-11-23 53 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/

相關問題