如何键入一个内部类

时间:2016-12-21 15:23:04

标签: c++ templates

我有一个矩阵类和一个列类:

template<class T>
struct MatrixT
{
    template<class T>
    struct ColumnT
    {
    };
};

请注意,ColumnT始终与MatrixT保持相同的类型。

为方便起见,我定义了

typedef MatrixT<double> matrix;

实际上,我大部分时间都会使用double元素。但我也想为columnT类定义类似的东西。我试过了

typedef MatrixT<double>::ColumnT<double> matrix::column;

但编译失败并显示错误

  

错误 - 不允许限定名称

有没有办法达到我想要的目的?

我希望能够输入matrix::column c;,就像我可以输入matrix m;

一样

1 个答案:

答案 0 :(得分:2)

只需删除第二个template<class T>

即可
template<class T>
struct MatrixT
{
    struct ColumnT
    {
    };
};

ColumnT应使用与MatrixT相同的类型,以及您的typedef ...

typedef MatrixT<double> matrix;

......应该像你期望的那样工作。