我将所有的枚举放入一套。我试图遍历集合并使用switch语句来给出变量值(尚未完成)。我无法设置迭代器来放入switch语句,告诉我我正在使用哪个枚举。这是我的代码。 *它给我一个空值。
for(std::set<CreateAndUseIniFile::iniFileValues>::iterator it=m_modules.begin(); it!=m_modules.end(); ++it)
{
switch(*it)
{
case CreateAndUseIniFile::VOLTAGE1_OFFSET:
break;
case CreateAndUseIniFile::VOLTAGE12_OFFSET:
break;
case CreateAndUseIniFile::VOLTAGE123_OFFSET:
break;
}
}
以下是我添加到集合中的代码
m_modules.insert(CreateAndUseIniFile::VOLTAGE1_OFFSET);
m_modules.insert(CreateAndUseIniFile::VOLTAGE12_OFFSET);
m_modules.insert(CreateAndUseIniFile::VOLTAGE123_OFFSET);
这是枚举
class CreateAndUseIniFile {
public:
enum iniFileValues
{
VOLTAGE1_OFFSET,
VOLTAGE12_OFFSET,
VOLTAGE123_OFFSET
}
std::set<CreateAndUseIniFile::iniFileValues> m_modules;
};
答案 0 :(得分:1)
您的容器应该是:
std::set< CreateAndUseIniFile::iniFileValues>
和迭代器
std::set< CreateAndUseIniFile::iniFileValues>::iterator it;
它将按预期工作。
注意:切换可能会被优化,因此在您为切换案例添加更多内容之前,您将无法进入,例如:
for ( std::set< CreateAndUseIniFile::iniFileValues>::iterator it = s.begin();
it != s.end(); ++it) {
switch (*it) {
case CreateAndUseIniFile::VOLTAGE1_OFFSET:
{
int iu = 100;
break;
}
case CreateAndUseIniFile::VOLTAGE12_OFFSET:
{
int u = 1000;
break;
}
//...
}
}