未解析的外部静态和特征类

时间:2012-07-20 13:28:17

标签: c++ gcc

我有一个像这样的特质课

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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

    static int GetElementCount() {return static_cast<int>(ElementCount);}
};