减号枚举导致向量错误

时间:2014-10-02 07:31:57

标签: c++ vector enums

我在静态类中有这样的枚举:

enum 
{
BLOCK1,
BLOCK2,
BLOCK3,
BLOCK4,
BLOCK5,
ERROR = -1
};

在实际代码中,枚举中有200多个。订单很重要。

稍后,我需要根据硬件输入获得一个数字。

vector<vector<int8_t>> HWConfig
{
    {BLOCK1, BLOCK5, ERROR},
    {BLOCK3, BLOCK1, ERROR},
    {BLOCK1, BLOCK2, ERROR},
}

矢量通常很小,18x18是最大值。并非enum中的所有值都在向量的向量中。我有很多向量的向量,它们给出不同的数字。我搜索了这个号码,所以,如果我想要第1行BLOCK5,我会返回1号。

问题在于ERROR,我得到了编译器消息

error: ‘TH::<anonymous enum>’ is/uses anonymous type
error:   trying to instantiate ‘template<class _E> class std::initializer_list’

如果我用-1替换ERROR,那么它就可以了。

一个例子是:用户调用这样的函数:

TH::getDEMOD(1, TH::ERROR);

TH::getDEMOD(uint8_t index, int8_t block)
{
vector<vector<int8_t>> HWConfig
{
    {BLOCK1, BLOCK5, ERROR},
    {BLOCK3, BLOCK1, ERROR},
    {BLOCK1, BLOCK2, ERROR},
};
return TH::find(HWConfig, index, block);
}

这应该返回2

0 个答案:

没有答案