我需要概括一個C++ typedef,所以我不需要複製和粘貼很多代碼。我使用boost序列化突擊陣列,並且我定義了自己的加載和保存方法,並且需要根據模板參數執行此操作。基本上我不知道如何來概括Typedef泛化
typedef blitz::Array<double, 2> my_Matrix;
高階張量,即,我想概括以上,這樣它會採取1,2,...,N,如果可能的類型做同樣的。
我想我正在追逐類似於typedef模板的東西。
我需要概括一個C++ typedef,所以我不需要複製和粘貼很多代碼。我使用boost序列化突擊陣列,並且我定義了自己的加載和保存方法,並且需要根據模板參數執行此操作。基本上我不知道如何來概括Typedef泛化
typedef blitz::Array<double, 2> my_Matrix;
高階張量,即,我想概括以上,這樣它會採取1,2,...,N,如果可能的類型做同樣的。
我想我正在追逐類似於typedef模板的東西。
不太瞭解突擊陣列,但你應該能夠將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.
的C++ 0x有它:
template <size_t N>
using MyMatrix<N> = blitz::Array<double,N>;
但是你仍然需要爲load
和save
反正一個模板方法。
typedef實際上只是爲某些東西創建了另一個名稱。這不像是做一個#define
,但它很接近。作爲另一個名字,你不能對他們做任何事情,你無法用他們正在取代的確切名字來做任何事情。
你可以做的是一路走下去並使用#define
。像這樣:
#define my_Matrix(X) blitz::Array<X>
就我個人而言,我討厭預處理器,寧願將它從語言中刪除。