C++ C+中的命名枚举+;
我在代码中使用命名枚举,如下所示C++ C+中的命名枚举+;,c++,enums,C++,Enums,我在代码中使用命名枚举,如下所示 namespace Config { enum class SubscribersIpVersion { Dhcpv6, DualStack, DualStackDhcpv6, DualStackSlaac,
namespace Config
{
enum class SubscribersIpVersion
{
Dhcpv6,
DualStack,
DualStackDhcpv6,
DualStackSlaac,
Ipv4,
Ipv6,
Slaac,
};
};
在我的一个类中,函数返回到IP版本
class xxxx
{
...
public:
SubscribersIpVersion getIpVersion() {return ipVersion;}
private:
SubscribersIpVersion ipVersion;
};
但如果条件失败,则会出现以下情况
if (!isIpv6 && (pSubGroup->getIpVersion() == Config::SubscribersIpVersion::Ipv6 ||
pSubGroup->getIpVersion() == Config::SubscribersIpVersion::Slaac ||
pSubGroup->getIpVersion() == Config::SubscribersIpVersion::Dhcpv6 ||
pSubGroup->getIpVersion() == Config::SubscribersIpVersion::DualStack ||
pSubGroup->getIpVersion() == Config::SubscribersIpVersion::DualStackSlaac ||
pSubGroup->getIpVersion() == Config::SubscribersIpVersion::DualStackDhcpv6))
我在gdb找到的原因是
(gdb) pt pSubGroup->getIpVersion()
type = enum Config::SubscribersIpVersion {Config::Dhcpv6, Config::DualStack,
Config::DualStackDhcpv6, Config::DualStackSlaac, Config::Ipv4, Config::Ipv6,
Config::Slaac}
(gdb) p pSubGroup->getIpVersion()
$1 = Config::DualStack
如果我比较,这就是gdb中的错误
(gdb) p pSubGroup->getIpVersion() == Config::SubscribersIpVersion::DualStack
`Config::SubscribersIpVersion' is not defined as an aggregate type.
有人能告诉我上面的代码有什么问题吗?全部:感谢您的支持。我发现代码中有一个逻辑问题。一旦修复,一切正常。什么是
isIpv6
?展示你的。是的,有什么价值?这对我很有用(我试过了,因为我没有看到你的代码有任何问题)。顺便说一句,比较不是更容易吗!ipv6&&pSubGroup->getIpVersion()!=配置::订阅IPVersion::Ipv4
?你查过我的链接了吗?那代码对我有用!