だから私はこの「例」コードを持っています
Packets.h
#ifndef PACKETS_H_
#define PACKETS_H_
#include <winsock2.h>
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
/* Some code here */
typedef struct _UDP
{
u_short UDP_Source_Port;
u_short UDP_Destination_Port;
u_short UDP_Total_Length;
u_short UDP_CheckSum;
} _UDP;
class _Packet
{
private:
_IPv4_Header* IPv4_Header;
_UDP* UDP;
_TCP* TCP;
public:
_Packet(void);
~_Packet(void);
void Analyze(const u_char* Packet_Data);
/* Some code here */
u_short Get_UDP_Source_Port(void) { return UDP->UDP_Destination_Port; }
u_short Get_UDP_Destination_Port(void) { return UDP->UDP_Destination_Port; }
u_short Get_UDP_Total_Length(void) { return UDP->UDP_Total_Length; }
u_short Get_UDP_CheckSum(void) { return UDP->UDP_CheckSum; }
};
#endif
Packets.cpp
#include "Packets.h"
#include <pcap.h>
_Packet::_Packet(void)
{
}
_Packet::~_Packet(void)
{
}
void _Packet::Analyze(const u_char* Packet_Data)
{
IPv4_Header = (_IPv4_Header*) Packet_Data;
if (0x06 == Get_IPv4_Protocol())
TCP = (_TCP*) Packet_Data + (int)Get_IPv4_Header_Length() / 4;
else if (0x11 == Get_IPv4_Protocol())
UDP = (_UDP*) Packet_Data + (int)Get_IPv4_Header_Length() / 4;
}
/* Some code here */
packets.cpp: メンバー関数 'void _Packet::Analyze(const u_char*)':
packet.cpp:20:3: エラー: 'UDP' はこのスコープで宣言されていませんでした
packet.cpp:20:10: エラー: '_UDP' はこのスコープで宣言されていませんでした
packet.cpp:20:15: エラー: ')' トークンの前にプライマリ式が必要です
packet.cpp:20:17: エラー: 予想される ';' 「Packet_Data」の前
main.cpp
/* Some code here */
_Packet Packet;
cout << " Source port: " << Packet.Get_UDP_Source_Port() << endl;
cout << " Destination port: " << Packet.Get_UDP_Destination_Port() << endl;
/* Some code here */
main.cpp:126:40: エラー: 'class _Packet' には 'Get_UDP_Source_Port' という名前のメンバーがありません
main.cpp:127:45: エラー: 'class _Packet' には 'Get_UDP_Destination_Port という名前のメンバーがありません
このエラーが表示される理由がわかりません。正常に動作するはずです