2009-10-30 28 views
1

我目前正在研究一個小標記器模板函數,該函數也將標記轉換爲不同的對象。這個效果非常好,就像我投入的所有結構具有相同數量的項目一樣。我想知道的是將函數轉換爲任意數量的項目結構。對我來說,功能的瓶頸,現在的問題是這樣的: 當它是一個固定的數(在這種情況下爲三個)的項目我做:C++:使用包含所有參數的數組初始化結構體

mystruct holder = {items[i], items[i+1], items[i+2]}; 

現在我的想法是能夠施展不同,以結構項目是把所有項目都放到一個數組(所有結構項目將同一類型的),只是初始化它是這樣的:

float values[numItems]; 
for(int j=0; j<numItems; j++) values[j] = items[i+j] 
mystruct holder = {values}; 

但可惜的是,你不能初始化這樣一個結構。有沒有人有關於如何實現這一點的想法? 謝謝!

+0

'mystruct'看起來像什麼?這似乎是你應該使用std :: list或vector – Wernsey 2009-10-30 12:57:31

+0

嘿,mystruct基本上非常簡單,像這樣的東西: 模板 結構頂點{ T x,y,z; }; 或者: 模板 struct TexCoord { T u,v; }; – moka 2009-10-30 13:11:20

回答

2

您可以使用一個構造函數,它將該數組作爲其參數。結構基本上是類,但具有公共的默認成員可見性而不是私有的。

+0

謝謝,好吧,我也想過,但後來我不得不讓他們像這樣的指針: mystruct * holder = new mystruct(values); 我不想這樣做。 也許我可以添加一個init函數或其他東西? 所以我可以這樣做: mystruct holder; holder.init(values); 有沒有其他想法? 謝謝! – moka 2009-10-30 13:08:23

+0

啊,我忘了,我不能投出這樣的對象: mystruct holder(values); – moka 2009-10-30 13:14:24

+1

對,它不是一個強制轉換,但是你會將「values」傳遞給struct的構造函數(在本例中爲「holder」) – Mutmansky 2009-10-30 13:36:31