gpt4 book ai didi

c++ - 在集合 C++ 中使用枚举时遇到问题

转载 作者:行者123 更新时间:2023-11-28 07:01:49 25 4
gpt4 key购买 nike

我将所有枚举放入一个集合中。我正在尝试遍历集合并使用 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;
};

最佳答案

你的容器应该是:

std::set< CreateAndUseIniFile::iniFileValues>

和迭代器

std::set< CreateAndUseIniFile::iniFileValues>::iterator it;

它会按预期工作。

注意:switch 可能会被优化,因此在您添加更多内容以切换 case 之前您将无法进入,例如:

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;
}
//...
}
}

关于c++ - 在集合 C++ 中使用枚举时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22338917/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com