定义Typedef?(UDP数据包)
Defineing a Typedef? (UDP Packet)
我正在使用RakNet创建一个涉及网络的程序。然而,我不知道如何为数据包定义typedef。我试图让它工作的功能是:
void UDP_ClientDisconnected(Packet *pPacket);
显然,数据包需要是这个函数的typedef,但我不知道如何做到这一点?感谢任何提供解决方案的人。
编辑:
void Connections::UpdateRakNetwork()
{
for(Packet = Peer ->Receive(); Packet; Peer ->DeallocatePacket(Packet), Packet = Peer ->Recieve())
{
PacketID = GetPacketIdentifier(Pacekt);
switch(PacketID)
{
case ID_DISCONNECTION_NOTIFICATION:
UDP_ClientDisconnected(Packet);
break;
}
Peer ->DeallocatePacket(Packet);
}
}
信息也从Connections.cpp中的数据包排序传递到.h文件,以便允许我从游戏的其他元素访问这些功能。因此允许我从另一个文件调用UDP_ClientDisconnected(..);
。
到目前为止,文件的这一部分没有错误,但.h声明出现了"数据包不是类型名"错误。正如下面的人所建议的,这可能是因为我命名了其他包,因此我将其重命名为RakPacket,并获得了相同的错误。
似乎是解决方案:
void Connections::UpdateRakNetwork()
{
RakNet::Packet *RakPacket = NULL;
// ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
for(RakPacket = Peer->Receive(); NULL != RakPacket; Peer->DeallocatePacket(RakPacket), RakPacket = Peer->Recieve())
// ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^
{
RakNet::PacketID pID = GetPacketIdentifier(RakPacket);
// ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^
switch(pID)
{
case ID_DISCONNECTION_NOTIFICATION:
UDP_ClientDisconnected(RakPacket);
// ^^^^^^^^^
break;
}
Peer->DeallocatePacket(RakPacket);
// ^^^^^^^^^
}
}
我给你这个不是在帮你。再次尝试理解RakNet::Packet *RakPacket = NULL;
,以及为什么我们不使用类名作为函数的参数,而是使用指向对象的指针
编辑:
针对第一条评论:
在C++中,对象是具有相关语义的存储区域。在C++对象模型的上下文中,对象一词指的是类的实例。类根据成员定义其实例的特征:数据成员(状态)和成员函数(方法或操作),以及这些成员对其他类的可见性。C++是静态类型的。
在本说明中,您可以将单词class
替换为struct
。两者之间唯一的区别是对其成员的默认访问权限(class
为private
,struct
为public
):C++中的结构和类之间有什么区别?。
您可以通过编写以下内容轻松做到这一点:
typedef Packet * pPacket;
之后,您可以通过以下方式创建指向数据包对象的指针:
pPacket somePacket(NULL);
somePacket = new Packet(...);
//etc...
Typedef很好,但是隐藏指针会使其无法读取。所以,如果你真的想这么做,你最好有一个充分的理由。
编辑:
"Connections::Packet" is not a type name.
请确保包含正确的类和库。这是你唯一的编译器错误吗?
- boost::asio UDP 广播客户端仅接收"fast"数据包
- 发送固定大小的 UDP 数据包
- 使用C++将UDP数据包存储在Structure中
- 在高数据包速率下最大限度地减少丢弃的 UDP 数据包 (Windows 10)
- Qt 在可预测的秒数后跳过 UDP 数据包
- 高频接收UDP数据包:丢包?
- C++ 通过 UDP 发送数据包,但不接收数据包
- 为 posix recv 设置超时会导致 udp 数据包丢失吗?
- 了解 UDP 数据包大小限制的 TCP 数据包大小限制以及它在 boost::asio 编程级别的含义
- 获取进入UDP数据包的目标端口
- 操纵Windows Explorer窗口时,UDP数据包会掉落
- 如何模拟QT UDP程序的数据包丢失
- C++ 使用 recvmmsg 丢弃 UDP 数据包
- 使用 UDP 协议从 Windows 套接字发送到 Qt 套接字的网络数据包上的结构编码和解码
- 如何在QT中接收适当的UDP数据包
- 使用ASIO捕获大量UDP数据包
- 如何正确接收多播UDP数据包
- C++ - 构造带有标头的数据包并通过 UDP 套接字发送
- 通过RecvFrom(UDP)接收数据包的一部分
- 服务器未收到UDP数据包,花费数小时试图找出问题所在