ネットワーク パケットを制御するための小さなシステムを作成しています。私は次のクラスを持っています:
- パケット(データ取得・設定機能あり)
- AuthPackets (パケット クラスを継承)
- AuthSend (AuthPackets の送信関数)
- AuthRecv (AuthPackets の recv 関数)
したがって、私が理解していることによると、AuthSend と AuthRecv は AuthPackets の構成ですが、どちらも機能のために Packets クラスが必要です。
したがって、コードは次のようになります。
class Stream {
private:
int position;
void* packet;
void* get_streampointer();
public:
void Skip(int bytes);
void NewPos(int pos);
void SetShort(short Data);
void SetInt(int Data);
void SetStringRef(StringRef* stringref);
short GetShort();
int GetInt();
void GetStringRef(StringRef* storedata);
};
class Packets : public Stream {
public:
void PacketEncrypt();
void PacketDecrypt();
short Size;
short Type;
};
class AuthPackets: public Packets {
AuthSend send;
AuthRecv recv;
bool Protocol(Player* player);
};
class AuthSend: public Packets {
public:
void SecureToken(short SecurCode);
void EncSecureToken(short SecurCode);
};
class AuthRecv: public Packets {
public:
bool SecurCode(Player* player);
};
問題は、なぜ AuthSend と AuthRecv が AuthPackets クラスの一部である場合に Packets を継承しなければならないのか? (すでにパケットを継承しています)。
また、AuthSend と AuthRecv から AuthPackets を継承すると、次のような関数を呼び出すためのシュガー構文が失われます。
authpackets.send.SecureToken
では、主な質問は、なぜ私のデザインに欠陥があるのかということです。どうも