1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
 
# 현재 구조
패킷 큐에는 패킷들이 들어감
 
struct Packet { int packetHeader; };
std:deque<Packet> packetQueue;
 
패킷은 성능/편의상, memcpy를 통해 초기화 됨. 따라서 가상 함수를 사용할 수 없음 
char *buffer;
memcpy(&packet, buffer, bufferLen);
 
실제 패킷 구현은 패킷 클래스를 상속 받아 확장 됨.
struct LoginPacket : Packet { char name[10]; };
 
# 하고 싶은 것
가상함수는 사용하기 싫지만 다형성은 쓰고 싶음. 예를 들어 자기 구조체 크기를 편하게 알고 싶어.
int getPacketSize() { return sizeof(T); }
 
어떤 해결 방법이 있을지 궁금하다.
CRTP로 해결할 수 없겠지?
구체화되지 않은 템플릿을 큐의 타입으로 삼을 수도 없잖아...
 
 
template<typename T>
struct PacketCRTP {}
 
struct LoginPacket : public PacketCRTP<PacketCRTP> {};
std::deque<PacketCRTP<?>>// error
cs
ㅇㅇ;