Typedef泛化

时间:2010-07-16 12:26:05

标签: c++ serialization boost typedef

我需要概括一个C ++ typedef,所以我不需要复制和粘贴很多代码。我正在使用boost序列化闪电战阵列,我正在定义自己的负载并保存方法,需要根据模板参数执行此操作。基本上我不知道如何概括

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

对于更高阶的张量,即,我想概括上面的内容,以便它将需要1,2,...,n,如果可能的话,对于该类型也是如此。

我想我正在追逐类似于typedef的模板。

3 个答案:

答案 0 :(得分:4)

对blitz数组不太了解,但你应该能够将typedef放在模板化的结构中。例如。类似的东西:

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

使用如此Matrix<3>::Type

关于序列化的其他问题,请查看数组文档:

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

看起来你可以通过调用size()来替换行* cols test for size。 data()方法仍应适用于排名> 1的矩阵。 2。

答案 1 :(得分:0)

C ++ 0x有它:

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

但是,无论如何,您仍然需要loadsave的模板方法。

答案 2 :(得分:0)

typedef实际上只是为某些东西创建另一个名称。这不像是#define,而是接近它。作为另一个名字,你无法对他们做任何与他们正在取代的确切名称无关的事情。

你可以做的就是一路走下去并使用#define。像这样:

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

就个人而言,我讨厌预处理器,并希望将其从语言中删除。