0

我有一个像这样的特质类

template <int Size, typename T>
class Traits<Vector<Size, T>>
{
    enum {ElementCount = Size};
};

这很好用,但是在比较不同特征实例的大小时,我会收到很多 GCC 警告。所以我想我会static const int ElementCount改用,但现在 GCC 抱怨未ElementCount找到未解决的外部(即)。我该如何解决这个问题?我当然不能为每个组合实例化 Traits 类。为什么 GCC 用枚举正确地看到了这一点,但用 const static 却没有?

4

1 回答 1

0

您会收到很多警告,因为您正在比较来自不同枚举的值。

您可以创建一个返回 int 进行比较的静态函数:

template <int Size, typename T>
class Traits<Vector<Size, T>>
{
    enum {ElementCount = Size};

    static int GetElementCount() {return static_cast<int>(ElementCount);}
};
于 2012-07-20T13:30:47.660 回答