【问题标题】:Named enumarations in C++C++ 中的命名枚举
【发布时间】:2017-06-01 09:54:41
【问题描述】:

我在我的代码中使用命名枚举,如下所示。

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() != Config::SubscribersIpVersion::Ipv4 不是更容易吗? ideone.com/ulMPAS
  • 你检查过我的链接吗?该代码对我有用! ideone.com/ulMPAS

标签: c++ enums


【解决方案1】:

所有:感谢您的支持。我发现代码中存在逻辑问题。修复后,一切正常。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-07
    • 1970-01-01
    • 2019-07-22
    • 2011-10-28
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多