Определение Typedef? (Пакет UDP)

Я использую 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 и получил ту же ошибку.

-1

Решение

Кажется, что это решение:

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, Единственное различие между ними заключается в праве доступа по умолчанию для их участников (private за class а также public за struct): Каковы различия между структурой и классом в C ++?.

1

Другие решения

Вы можете легко это написать:

typedef Packet * pPacket;

После этого вы можете создать указатель на объект Packet через:

pPacket somePacket(NULL);
somePacket = new Packet(...);
//etc...

Typedef хороши, но скрытые указатели делают его нечитаемым. Так что, если вы действительно хотите это сделать, вам лучше иметь веские причины для этого.

РЕДАКТИРОВАТЬ:

"Connections::Packet" is not a type name.

Убедитесь, что вы включили правильные классы и библиотеки. Это ваша единственная ошибка компилятора?

-2

По вопросам рекламы [email protected]