私は基本クラスを持っています、
class Msg
{
public:
ParseMsg()
{
ParseMsgData();
ParseTrailer();
}
virtual void ParseMsgData() = 0;
ParseTrailer();
};
および派生クラス、
class InitiateMsg : public Msg
{
public:
void ParseMsgData() { ... }
};
class ReadOperationMsg public Msg
{
public:
void ParseMsgData() { ... }
};
class WriteOperationMsg public Msg
{
public:
void ParseMsgData() { ... }
};
シナリオは以下のとおりです。
void UsageFunction(string data)
{
Msg* msg = ParseHeader(data);
ParseMsg
}
Msg* ParseHeader(string data)
{
Msg *msg = NULL;
....
switch()
{
case 1:
msg = new InitiateMsg();
break;
case 2:
msg = new ReadOperationMsg{();
break;
case 3:
msg = new WriteOperationMsg{();
break;
....
}
return msg;
}
データに基づいて ParseHeader メソッドが作成する必要があるオブジェクトを決定するため、使用しているクラスの外部に ParseHeader 関数を実装しました。Msg クラス内で ParseHeader 関数を作成して使用するにはどうすればよいですか?
C# では、クラス内で ParseHeader メソッドを static として定義し、それを外部から使用することで同じことが実現されます。