C++ 枚举值始终为true的条件

C++ 枚举值始终为true的条件,c++,enums,C++,Enums,好吧,我肯定这里一定有什么蠢事。我没有真正使用枚举,所以可能我只是做了一些不正确的事情。我正在创建一个红黑树实现,并在类节点内部使用枚举来确定它是红黑节点。我已经仔细阅读了代码,当我到达我试图插入的给定节点的这个语句时,它不应该执行循环,因为父节点的颜色是黑色而不是红色!出于某种原因,这被认为是正确的,我不知道为什么。。。任何帮助都将不胜感激!谢谢 while(x->m_parent->m_color == (Node::Color::ST_Red)) ; 这是我节点类的一部分,以

好吧,我肯定这里一定有什么蠢事。我没有真正使用枚举,所以可能我只是做了一些不正确的事情。我正在创建一个红黑树实现,并在类节点内部使用枚举来确定它是红黑节点。我已经仔细阅读了代码,当我到达我试图插入的给定节点的这个语句时,它不应该执行循环,因为父节点的颜色是黑色而不是红色!出于某种原因,这被认为是正确的,我不知道为什么。。。任何帮助都将不胜感激!谢谢

while(x->m_parent->m_color == (Node::Color::ST_Red)) ;
这是我节点类的一部分,以防万一

class Node
{
public:
    Node()
    {
        m_data = 0 ;    
        m_color = Node::Color::ST_Red ; 
    }

    enum Color
    {
        ST_Red,
        ST_Black
    };

private:
    int m_data ;    
    Color m_color ; 
    Node* m_parent; 

};

颜色::红色无效。为此,您需要一个枚举类。在节点内部,不应该使用Node::循环体在哪里?确实要移动到下一个节点吗;在你的真实代码中,你展示的代码是一个无限循环。除掉旧毛病;过了一会儿,我没有包括循环体,因为我认为不需要它。当我逐步浏览代码时,我可以看到它进入了循环,并且它正在比较正确的节点。