将struct变量从函数存储到本地struct变量

时间:2016-03-21 13:12:19

标签: c++ struct

typenid是在类Queue,queue.h

中定义的结构
struct typenid{
     typenid() : src_type(0), src_id(0){}
     uint32_t src_type;
     uint32_t src_id;
     } node_details;

以下是我的事件驱动模拟器中的一种类。

class FindNextHopEvent : public event {
    public:
    FindNextHopEvent(double time, Packet *packet, Queue::typenid node_details ); 
    ~FindNextHopEvent();
    void process_event();
    Packet *packet;
    Queue::typenid local_node_details; // should get the value of node_details
};

我想在process_event()中使用node_details结构,但我不想将其作为参数传递(由于各种原因)。有没有办法使用local_node_details(类似于node_details的结构)来捕获node_details的值,以便我可以在process_event()中访问它?如果是这样我怎么能这样做。如果我将local_node_details声明为指针,那么我可以使用"这个"运算符,但对于结构我该怎么做。

这就是我目前的定义。

FindNextHopEvent::FindNextHopEvent(
   double time,
   Packet *packet,
   Queue::typenid node_details
   ): event(NEXT_HOP_EVENT, time) {
 this->packet = packet;
 Queue::typenid local_node_details= node_details;
}

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

有一种方法,使用引用。将引用传递给FindNextHopEvent构造函数的结构,并将local_node_details结构作为参考,然后就可以执行此操作:

class FindNextHopEvent : public event {
    Queue::typenid& local_node_details;
    //            ^
    //            |
    // Note use of ampersand to make it a reference

    ...
};

...

//               Note use of ampersand to make it a reference
//                                                          |
//                                                          v
FindNextHopEvent(double time, Packet *packet, Queue::typenid& node_details )
    // Use constructor initializer list to initialize references
    : ..., local_node_details(node_details)
{ ... }