大学の宿題で、関数 (またはコマンド) に基づく言語のインタープリターを C++ で作成する必要があります。インタープリターは、入力ファイルを読み取り、単語 (文字列) を抽出し、コマンドを生成して実行する必要があります。Command
すべてのコマンドは、 という仮想メソッドを持つ共通のスーパークラス ( など) から継承するクラスexecute
です。入力ファイルから読み取られた単語ごとに、コマンドが作成され、vector<Command>
.
そのため、キーがコマンド (文字列) の名前であり、値が特定のクラスを作成できるようにする (または特定のクラスのコンストラクターにアクセスできるようにする) ある種のオブジェクトであるハッシュテーブルを使用することを考えています。 )、一連の if-else-if を使用する代わりに、各単語のクラスを簡単に作成できます。
今のところ、新しいオブジェクトを返すというCommandGenerator
仮想メソッドを持つクラスを作成する予定です。私のコマンド ハッシュ テーブルの値は、クラスのオブジェクトになります。そのため、すべてのコマンドの他の多くのサブクラスを派生させて、 から派生した特定の新しいオブジェクトを返します。generate
Command
CommandGenerator
Command
しかし、そのようなものはすでに存在しますか?または、それを行うためのよりエレガントな方法はありますか? それを表すためにクラスから抽出できるオブジェクトの種類はありますか?