gpt4 book ai didi

c++ - 将结构变量从函数存储到局部结构变量

转载 作者:行者123 更新时间:2023-11-28 05:46:17 24 4
gpt4 key购买 nike

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 声明为指针,那么我可以使用“this”运算符,但对于结构我该怎么做。

这就是我当前的定义。

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;
}

非常感谢任何帮助。

最佳答案

有一种方法,就是使用引用。将结构的 引用 传递给 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)
{ ... }

关于c++ - 将结构变量从函数存储到局部结构变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36132002/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com