Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 175
  • Last Modified:

Why does't this work. faint.........about priority_queue

I save a sample Struct

struct Packet
{
  unsigned int      l_Priority  : 5;       
  unsigned int      CRC        : 8;
 
  bool operator < (Packet* msg) const      
  {
        return l_Priority < msg->l_Priority ;
  }
  bool operator > (Packet* msg) const      
  {                   
        return l_Priority > msg->l_Priority ;
  }
};
in a priority_queue
 typedef std::priority_queue <const Packet*> Msg_Queue;
but it not works!!
I try to excute following test code
      Packet* p1;
      Packet* p2;

      p1 = new Packet();
      p2 = new Packet();

      p1->l_Priority = 1;
      p2->l_Priority = 3;

      if (p1 > p2)
            printf("p1 > p2\n");
      else
            printf("p1 < p2\n");
the result seems always p1 > p2, even though p1->l_Priority < p1->l_Priority
0
reneschy
Asked:
reneschy
1 Solution
 
Jaime OlivaresSoftware ArchitectCommented:
Try with this:

struct Packet
{
  unsigned int     l_Priority  : 5;      
  unsigned int     CRC      : 8;
 
  bool operator < (Packet& msg) const    
  {
       return l_Priority < msg.l_Priority ;
  }
  bool operator > (Packet& msg) const    
  {                
       return l_Priority > msg.l_Priority ;
  }
};

int main()
{
     Packet* p1;
     Packet* p2;

     p1 = new Packet();
     p2 = new Packet();

     p1->l_Priority = 1;
     p2->l_Priority = 3;

     if (*p1 > *p2)
          printf("p1 > p2\n");
     else
          printf("p1 < p2\n");
     system ("Pause");
     return 0;
 }    
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

Tackle projects and never again get stuck behind a technical roadblock.
Join Now