3

メイン プログラムは構成ファイルを読み取り、構成ファイルは実行する機能をプログラムに指示します。関数は別のファイルにあり、現在、新しい関数を作成するたびに、メインプログラムに関数呼び出しを追加する必要があります (構成ファイルで示されているときに呼び出すことができます)

私の質問は、メインプログラムをそのままにしておく方法はありますか?新しい関数を追加すると、ある種の配列を介して呼び出すことができます。

例 (ご容赦ください。あなたがこれを実行できるかどうか確信が持てません)。

私は配列(または列挙型)を持っています、

char functions [3] = ["hello()","run()","find()"];

構成ファイルを読んで、run hello() と表示されている場合、配列を使用して実行できますか (テストが配列に存在するかどうかを確認できます)

また、配列に新しい関数を簡単に追加できます。

注:配列ではできないことはわかっているので、例にすぎません

4

4 に答える 4

5

このようなものだと思います。

#include <functional>
#include <map>
#include <iostream>
#include <string>

void hello()
{
   std::cout << "Hello" << std::endl;
}

void what()
{
   std::cout << "What" << std::endl;
}

int main()
{
   std::map<std::string, std::function<void()>> functions = 
   {
      std::make_pair("hello", hello),
      std::make_pair("what", what)
   };
   functions["hello"]();
}

http://liveworkspace.org/code/49685630531cd6284de6eed9b10e0870

于 2012-07-18T06:06:25.097 に答える
3

関数へのポインタを使用してそれを行います。

例(構文がわかりません):

map<string,void(*)()> funcs;

そして、するfuncs[name]();

于 2012-07-18T06:05:16.350 に答える