我有一个像这样的特质课
template <int Size, typename T>
class Traits<Vector<Size, T>>
{
enum {ElementCount = Size};
};
这很好用,但是在比较不同特征实例的大小时,我会收到很多关于GCC的警告。所以我认为我会使用static const int ElementCount
代替,但现在GCC抱怨未找到未解决的外部因素(即ElementCount
)。我该如何解决这个问题?我当然不能为每一个组合实例化Traits类。为什么GCC会使用枚举正确地看到这个,而不是使用const static?
答案 0 :(得分:0)
您收到很多警告,因为您正在比较来自不同枚举的值。
您可以创建一个返回int的静态函数进行比较:
template <int Size, typename T>
class Traits<Vector<Size, T>>
{
enum {ElementCount = Size};
static int GetElementCount() {return static_cast<int>(ElementCount);}
};