問題
さまざまな関数のセットがあるとします。そこにある各関数は、何らかのオブジェクトのメンバー関数である場合があり、任意の数の引数を取る場合があります。int
簡単にするために、各関数には,double
または型の引数が 8 つ以下であると仮定しstd::string
ます。例えば:
class MyClass{
public:
void DoA(int i);
void DoB(double d, int i);
};
class YourClass{
public:
void DoC(std::string s);
void DoD(int i1, int i2, int i3);
};
関数に関する一連のレコードを含むファイルがあるとします。各レコードには、呼び出される関数の名前、その引数の値、およびメンバー関数のオブジェクトへのポインターが含まれています。このすべてのデータをファイルから読み取り、正しい引数を使用して正しい順序で関数を実行する方法が必要です。
たとえば、関数の名前をハードコーディングしてもかまいませんが、新しい関数をライブラリに追加するのはできるだけ簡単にする必要があります。
動機
これは、作成しようとしているローグライク ゲーム プロジェクトの一部であり、具体的にはセーブ/ロード ゲーム システムです。プレーヤーがゲームを保存しようとすると、まだ発生していないすべてのイベントも保存する必要があり、次にプレーヤーがゲームをロードするときに、ゲーム イベントを適切にロードしてスケジュールする必要があります。ローグライクは明らかに拡張するために多くのスペースを必要とするため、関数の型については何も仮定したくありません。