2012-11-28 81 views
-5

我想創建一個多個模板對象的數組。模板類對象數組

例如,如何使填充有這些2個對象的數組:

Foo< A, B, C > FooItem (bar_, bor_); 
Foo < D, E, F > FooItem2 (bur_, ber_); 

myArray[0] = FooItem; 
myArray[1] = FooItem2; 

void *指針數組?古典陣列?

謝謝!

+0

該帖子顯示的是函數聲明。對象在哪裏? –

+0

問題不明確。請嘗試http://whathaveyoutried.com/ –

+1

'std :: vector'和[Boost Any](http://www.boost.org/doc/libs/1_52_0/doc/html/any.html)? –

回答

0

可以使用對的載體:

std::vector< std::pair< Foo<A, B, C>, Foo<D, E, F> > > array; 

相反,如果你想有一個簡單的數據陣列:

std::pair< Foo<A, B, C>, Foo<D, E, F> > array[size]; 
2

我假設你的意思是你想要的數組是能夠容納不同類型的對象。一個簡單的數組不能做到這一點,因爲所有的元素必須是相同的類型,並且void*不會有太大的用處,因爲沒有辦法確定任何對象的類型,因此沒有辦法做任何有用的事情。

各種可能性,取決於你打算如何使用的對象的陣列中,包括:

  • 定義一個共同的基類,並存儲指向。如果基類是多態的,則可以使用虛函數dynamic_casttypeid與對象進行交互。
  • Boost.Variant可以存儲來自任何預定義類型的對象。這些可以存儲在一個數組中,是有效的(不需要額外的重定向),並且可以以類型安全的方式進行訪問而無需強制轉換。
  • Boost.Any可以存儲任何類型的對象。