저는 명령과 컨트롤 유형 시나리오를 사용하여 함수 포인터를 자유롭게 사용했습니다. 여기서는 메시지가 의뢰. 이것은 switch-case
(점프 테이블 최적화는 제쳐두고)을 사용하여 더 이상 그런 일을 할 필요가 없으므로 합리적으로 효율적인 구현을합니다. 대신이의C++에서 멤버 함수에 대한 함수 포인터의 배열 사용
: 예를 들어
switch(msg.cmd){
case FUNC0:
return func0(msg);
case FUNC1:
return func1(msg);
...
}
우리는 (msg.cmd
에 확인 어떤 정신 생략) 직접 적절한 핸들러를 실행하기 위해 다음과 같이 뭔가를 할 수 : 최근
(*cmd_functions[msg.cmd])(msg)
을, 내가 가진 유사한 "컨트롤"기능을 구현하는 C++ 코드로 작업하기 시작했지만 스위치 케이스를 사용하여 그렇게했습니다. C++에서이를 수행하기위한 표준 방법론이 있습니까? 아마도 함수 포인터 배열 인스턴스 변수가 생성자에서 초기화 되었습니까?
클래스의 V- 테이블의 런타임 사용으로 인해 솔루션이 좀 더 복잡해질 수 있다고 우려했습니다.
C 메소드가 C++에서 여전히 작동하지 않습니까? – JeremyP
저는 현대 C++에 대한 전문가가 아니지만, 지금부터는 [lambdas] (http://en.cppreference.com/w/cpp/language/lambda)가 있습니다. 배열이나 벡터 등을 만들 수 없습니까? 람다? – JeremyP
궁금해서 왜 스위치 케이스가 붙어 있습니까? 왜 뛰어 내리는 테이블이 효과가 없을까요? – mnistic