我在静态类中有这样的枚举:
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