関数リダイレクトでifとhardcoded文字列を使用しないようにする方法がありますか?文字列を受け取り、テンプレート/メタプログラミングでapropiate関数を呼び出すことです。C + +ハードコードされた文字列を避ける場合
#include <string>
#include <iostream>
void account()
{
std::cout << "accout method" << std::endl;
}
void status()
{
std::cout << "status method" << std::endl;
}
void redirect(std::string method_to_call)
{
if(method_to_call == "account")
{
account();
}
else if(method_to_call == "status")
{
status();
}
else
{
std::cout << "method not found!!" << std::endl;
}
}
int main()
{
std::string method_name;
std::cin >> method_name;
redirect(method_name);
return 0;
}
あなただけなし、 'のstd :: map'を使用することができますか? –
* "多分テンプレート/メタプログラミング" * - テンプレートはコンパイル時の決定であり、関数の選択はユーザ入力に依存する実行時の決定であるため、最初からリストから外すことができます。 – WhozCraig