지금 데이터가 필요한 서버 목록에 명령 목록을 보내는 클라이언트가 있습니다. 내 서버는 예를 들어, GetProcAddress를를 사용하여 DLL을 통해 이러한 명령을로드합니다 initiailizeDLL는 다음과 같이 정의된다콜백 디자인 패턴
InitializeDLL initializeDLL = (InitializeDLL)GetProcAddress(hInstanceLibrary, "InitializeDLL");
:
클라이언트는 지금은 데이터를 원하는되는 문자열로 명령 이름을 전송typedef int (CALLBACK* InitializeDLL)(int,int);
에 대한. 나는 사용할 수 있기를 원하는 명령어 목록을 꽤 가지고 있으며, 효율적인 방법으로 이것을 구현하는 방법에 대한 아이디어가 없다. 나는 Map을 만들고 그 이름을위한 문자열을 키로 사용하고 CALLBACK *을 적절한 함수의 포인터로 사용하려고 생각했다. 그러나 그 후에 나 또한 그것을 캐스팅해야 할 것입니다. 필자는 대부분 Java 프로그래머이고 C++ 프로그래머가 아니기 때문에이 맵 아이디어가 효과가 있는지 또는 결국 캐스트를 처리 할 방법이 있는지 잘 모르겠습니다. 또한 Wikipedia의 Command 패턴을 살펴 보았지만이 경우 어떻게 구현되는지는 알 수 없습니다.
지금 사용되는 <>'나쁜 생각은 아닌 것 같아. 한번 해봐라. 문제가 생기면 다시 돌아와 다른 질문을 할 수있다. STL 컨테이너에 대한 좋은 점은 컨테이너를 'typedef'하는 한 다른 컨테이너를 변경하는 것이 상대적으로 쉽다는 점입니다. – jxh
모든 함수 포인터는 동일한 요소를 갖습니까? – Brady
대부분의 함수 포인터는 유사하지만, 한 쌍이 int 대신 double을 반환하고 매개 변수의 개수가 다를 수 있습니다. –