如何使此UDPSocket对象成为全局对象,以便可以在其他函数中使用它?

时间:2018-11-08 22:55:38

标签: c++

在我的代码中,我像这样创建套接字对象:

UDPSocket sock(&eth);

“ eth”的类型为EthernetInterface。

在创建套接字对象的函数内部使用“ sock”函数,一切都很好,但是我需要访问相同的套接字才能在其他函数中接收UDP数据包。

由于其功能,它不能与其他全局变量一起使用,我尝试在全局变量中设置UDPSocket socket;,然后

UDPSocket s(&eth);
sock = s;

这似乎使正在运行它的ARM设备崩溃。我不想创建一个UDPObject,然后每次调用它们时都必须将它作为参数传递给每个函数。

1 个答案:

答案 0 :(得分:0)

尝试像这样创建全局指针

UDPSocket *socket;

并在开始时将其初始化:

int main() {
     socket = new UDPSocket(&eth);
     //other code
}

,或者至少在使用之前。而且不要忘了以后将其删除

编辑: 考虑使用std::unique_ptr<UDPSocket>并使用std::make_unique<UDPSocket>(&eth)

初始化注释