この質問は恐らくthisと重複していますが、私の回答がアプリケーションにどのように当てはまるのか分かりません。私は複数の派生クラスを持つ基本クラスを持っています。クラスメソッドはすべて同じ名前を持つ必要があります。アプリケーションは、データグラムタイプに基づいて異なる方法でデコードする必要があるUDPメッセージを受信します。たとえば、DerivedDatagramAまたはDerivedDatagramBのDecodeを呼び出すために、BaseDatagramのDecodeをどのように行うことができますか?派生したメソッドを基底から呼び出す方法
class DerivedDatagramA: public BaseDatagram
{
...
};
class DerivedDatagramB: public BaseDatagram
{
...
};
void BaseDatagram::Decode(uint8_t * buffer)
{
switch(buffer[DATAGRAM_TYPE])
{
case DATAGRAM_TYPE_A:
Decode(buffer); // How to call decode in DerivedDatagramA?
break;
case DATAGRAM_TYPE_B:
Decode(buffer); // How to call decode in DerivedDatagramB?
break;
ここでは継承を望んでいません(別のやり方でやりたがります)。 BaseDatagramをデータグラム用のディスパッチャにします(BaseDatagramよりもDatagramはありません)。 –