范围分辨率运算符在类型名称后使用时的含义是什么?

时间:2013-11-13 02:21:55

标签: c++

我有以下一段代码让我有点失望:

template <typename T, typename K>
struct __UJstruct
{
    ...
    char lchar[K::hLen];
    ...
};

K::hLen在这种情况下做了什么?

1 个答案:

答案 0 :(得分:4)

在此上下文中,hLen很可能是类K的静态数据成员。静态数据成员作为一个整体而不是单个对象属于该类型,如果您没有K对象,您仍然可以像这样引用它们。

另一种可能性是hLen可能是enumK声明的一部分,如下所示:

class K
{
public:
    enum Dimensions
    {
        hLen,
        hHgt,
        hDpth
    };

    ...
};

在其他情况下,您还可以使用::运算符来引用K内声明的类型,如下所示:

class K
{
public:
    class J
    {
        ...
    };

    ...
};

...

K::J j;