단일 테이블에서 모든 유형의 함수를 호출하려고합니다. (반환 유형은 모두 무효라고 생각하십시오.)매개 변수 서명에 관계없이 함수 테이블을 만들 수 있습니까?
내가 말하는 바를 설명하기 위해 분명히 작동하지 않는 코드가 있습니다.
#include <iostream>
#include <map>
#include <functional>
void foo(int x){std::cout<<x;}
void bar(){std::cout<<"bar";}
std::map<std::string, std::function<void()>> map =
{
{"foo", foo},
{"bar", bar}
};
int main()
{
map["foo"](2);
map["bar"]();
}
저는 C 스타일 솔루션에 반대하지 않았습니다.
[여기]와 (http://coliru.stacked-crooked.com/a/74fd8557676d6d39)? –
어떻게 이러한 기능을 호출 하시겠습니까? 확실히 그 시간에 매개 변수를 알게 될 것입니다. 어떤 경우에는 각 유형의 기능 서명에 대해 별도의 맵을 사용하지 않는 것이 좋습니다. 함수 유형은 정적 매개 변수를 포함하는 템플릿 매개 변수 인 템플릿 기반 클래스를 사용할 수 있습니다. –
@NeilKirk 나는 그것도 고려하고있다. 나는 간단한 언어에 대한 특별 통역사를 쓰고있다. 값은 사용자로부터옵니다. – manasij7479