2010-07-16 48 views
2

我需要概括一個C++ typedef,所以我不需要複製和粘貼很多代碼。我使用boost序列化突擊陣列,並且我定義了自己的加載和保存方法,並且需要根據模板參數執行此操作。基本上我不知道如何來概括Typedef泛化

typedef blitz::Array<double, 2> my_Matrix; 

高階張量,即,我想概括以上,這樣它會採取1,2,...,N,如果可能的類型做同樣的。

我想我正在追逐類似於typedef模板的東西。

回答

4

不太瞭解突擊陣列,但你應該能夠將typedef放在模板化結構中。例如。例如:

template<int N> 
struct Matrix 
{ 
    typedef blitz::Array<double,N> Type; 
}; 

像這樣使用Matrix<3>::Type

至於您對序列的其他問題,看文檔數組:

http://www.oonumerics.org/blitz/manual/blitz02.html

它看起來像你可以用大小調用替換行*的cols測試尺寸()。數據()方法仍然應該秩的矩陣工作> 2.

0

的C++ 0x有它:

template <size_t N> 
using MyMatrix<N> = blitz::Array<double,N>; 

但是你仍然需要爲loadsave反正一個模板方法。

0

typedef實際上只是爲某些東西創建了另一個名稱。這不像是做一個#define,但它很接近。作爲另一個名字,你不能對他們做任何事情,你無法用他們正在取代的確切名字來做任何事情。

你可以做的是一路走下去並使用#define。像這樣:

#define my_Matrix(X) blitz::Array<X> 

就我個人而言,我討厭預處理器,寧願將它從語言中刪除。