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;
}
非常感谢任何帮助。
答案 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)
{ ... }