함수 리디렉션에서 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;
}
당신은 단지 아니,'표준 : :지도'를 사용할 수 있습니까? –
* "아마도 템플릿/메타 프로그래밍"* - 템플릿은 컴파일 타임 결정이며 함수 선택은 사용자 입력에 따른 런타임 결정이므로 거의 처음부터 목록에서 제외 할 수 있습니다. – WhozCraig